遇上了一个问题,程序:
import java.util.Scanner;
public class InputTEst {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i;
String temp="abcd\n";
String s;
System.out.println("输入一个整数:");
i=sc.nextInt();
temp=sc.nextLine();
System.out.println("输入一个字符串:");
s=sc.nextLine();
System.out.println("i="+i+",s="+s.toCharArray().length+",temp="+(int)temp.toCharArray().length);
}
}
如果没有temp=sc.nextLine();这一行,那么输入一个整数后,无需再输入字符串,程序就会结束,并显示 s 的长度为 0 。
(刚发现,不要在意为什么把字符串 s 转成字符数组才求长度,因为还没有从刚才写的程序中回过神来,随手就这么写了)
根据之前的经验,我推测应该是前面的sc.nextInt()方法并没有正确处理 windows 下面的回车( windows 下面按下回车键产生两个字符,回车和换行,\r\n,Linux 、UNIX 和 MAC 都只有一个字符)。粗略看了一下 nextInt 方法的代码,也没有什么头绪,
所以请教大神: nextInt 方法到底是检测到不是整数的数据就停下来来,还是压根就没有考虑到 windows 的这个特殊情况?