※ 引述《onejiko (己摳)》之銘言:
: 我想問當我一開始輸入3
: 再輸入三串數列都可以正常OUTPUT
: 1 2 3 4 5 6
: 2 3 4 5 6 1
: 3 4 5 6 1 2
: 但如果我是用複製貼上那三行數列的話
: 它卻不能完全抓取到三串數列這是怎麼回事?
你的問題應該簡化為「複製貼上無法取得三個『字串』」
也就是說
: int i;
: int num;
: String str1;
: System.out.println("請輸入n");
: Scanner c = new Scanner(System.in);
: num = c.nextInt();
(上面都是雜訊,直接 int num = 3; 來測你的程式不是更快樂)
: String array[][] = new String[num][6];
: for(int x=0;x<num;x++){
: System.out.println(x);
: Scanner scanner = new Scanner(System.in);
: str1 = scanner.nextLine();
你在這邊 System.out.println(str1); 就會覺得怪怪的了
連 str1 都不對了,後頭還能期望什麼 T__T
: String str2[]=str1.split(" ");
: i=0;
: for(int y=0 ; y<6 ; y++ ){
: array[x][y] = str2[i];
: i++;
: }
: }
也就是說,你的「真正」的問題,其實可以簡化成
下面的程式碼,為什麼直接複製貼上
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
結果會跟每次一行一行手動輸入不一樣
int num = 3; //TODO 改成 System.in 輸入
for (int x = 0; x < num; x++) {
Scanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine());
}
加上良好的縮排,理論上你就不會害到 cyclone350 Orz
→ cyclone350:is it? http://ppt.cc/wJSc
基本上 cyclone350 的回答... 我個人認為非常詭異 =="
因為如果複製貼上到 Notepad 之類的 editor / textarea
他還是會換行,不是嗎?
那表示當你複製的時候,一定有幫你補換行符號
不然 editor / textarea 怎麼知道要換行 Orz
再加上 Scanner.nextList() 的程式碼
String result = findWithinHorizon(linePattern, 0);
回頭追一下 linePattern 怎麼來的
基本上是這個 pattern
"\r\n|[\n\r\u2028\u2029\u0085]"
\r 跟 \n(那三個 \u 不確定是啥字 XD)都有進去了
所以說... 這不科學! [蓋章]
結果就是,你的 Scanner 宣告放錯地方了
至於為什麼,我想你要自己找出答案 [指]
最後,我覺得一切循其本
能從 source code 或是標準文件作為 reference 是比較好的
我昨天才遇到一個五年前沒問題、官方文件也這樣教
結果三年前的 source code 就告訴你「強烈建議不要這樣作」的哏 [淚目]
====
麻煩 cyclone350 繳交 500 字檢討報告,不然就讓你上版標! [完全誤]