Java吸收换行符
今天做题遇到的……
由于读入的字符串可能包含空格,所以采用nextLine。
int n = sc.nextInt();
for(int i=0; i<n; i++) {String s = sc.nextLine();System.out.println(s);}上面的代码只会输出n-1个字符串,最后一个没有输出,原因nextInt()方法会读取下一个int型标志的token,但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头,所以这样就无法接收到下一行输入的String类型的变量。
解决方案
int n = sc.nextInt();
for(int i=0; i<n; i++) {String s = sc.next();s += sc.nextLine();System.out.println(s);}原因: next()方法是以换行或者空格符为分界线接收下一个String类型变量,不过并没有提取换行或者空格,所以生成的s并不包含换行。
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.