※ 引述《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 字检讨报告,不然就让你上版标! [完全误]