作者matthewyang (马特休斯)
看板java
标题[J2SE] 关於System.in的问题请教
时间Fri Aug 21 09:46:10 2015
OK 事情是这样的
小的是Java新手,发神经在尝试input String时, 有了下列疑问:
====== Code Part ======
Scanner sc = new Scanner(System.in);
String strInput = sc.nextLine();
如果输入 12345\nabcde
输出为 12345\nabcde
若改成
String s = "12345\nabcde";
Scanner sc1 = new Scanner(s);
System.out.println(sc1.nextLine());
System.out.println(sc1.nextLine());
输出会变成:
12345
abcde
傻呼呼的将第一段改成
Scanner sc = new Scanner(System.in);
String strInput = sc.nextLine();
Scanner sc2 = new Scanner(strInput);
System.out.println(sc2.nextLine());
System.out.println(sc2.nextLine());
输入12345\nabcde时,输出同样是12345\nabcde
印象中, newxLine() 与 next() 主要差异是遇到空白或挑脱字元(\n)时,
是否接续到读取到敲enter的点
但System.in在收到input内容有\n时,却无法如预期跳行
还请神人指点小的观念上的误判点
Orz... (先行跪拜)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.120.196.138
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1440121578.A.40C.html
1F:→ adrianshum: 因为在stdin输入 \n 是真的代表一个 '\' 然後 'n' 08/21 10:51
2F:→ adrianshum: 不是换行 08/21 10:51
3F:→ matthewyang: @_@ 那 System.in 有跳脱字元吗 还是 08/21 11:02
4F:→ matthewyang: 通过 System.in 所有input都会被认定为实际的input? 08/21 11:03
5F:→ adrianshum: 当然不会有跳脱。 08/21 11:25
6F:→ matthewyang: 所以System.in是以逐字元方式处理罗?? >_<"a 08/21 11:40
7F:→ matthewyang: 那我会比较好奇 未什麽用一个String物件接起 08/21 11:41
8F:→ matthewyang: System.in内容 再new新的Scanner读取这个String 08/21 11:42
9F:→ matthewyang: 却无法判断这个String内容有\n须要跳行 08/21 11:43
10F:→ matthewyang: 因为 直接宣告一个String s = "111\naaa"时 08/21 11:43
11F:→ matthewyang: 可用nextLine() 读取并分两行呈现 XDDDD 08/21 11:44
12F:推 haha02: 编译时\n会帮你转成换行字元0x0A 08/21 11:48
13F:→ matthewyang: 所以 因为System.in的资讯并不会被编译只会直接传递? 08/21 12:04
14F:→ matthewyang: 大至解了 感谢两位大大 08/21 12:10