有人告诉我需要使用sc.nextLine();在sc.nextInt()之后;但我不明白你为什么要这样做:(
这是我的代码:
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int respuesta = 1;
showMenu();
respuesta = sc.nextInt();
sc.nextLine(); //Why is this line necessary for second scan to work?
switch (respuesta){
case 1:
System.out.println("=== Palindromo ===");
String palabra = sc.nextLine();
if (esPalindromo(palabra) == true)
System.out.println("Es Palindromo");
else
System.out.println("No es Palindromo");
break;
}
}
非常适合你的时间和帮助:D
答案 0 :(得分:7)
nextInt()
只有在找到int然后停止时才会读入。
您必须执行nextLine()
,因为输入流仍然具有换行符,并且可能还有其他非int数据。调用nextLine()
读取剩下的任何数据,包括输入用户在输入int和输入字符串之间按下的内容。
答案 1 :(得分:1)
当您输入值(String
,int
,double
等等)并点击“输入”时,换行符(又名'\n'
})将附加到输入的末尾。因此,如果您输入int,sc.nextInt()
将只读取输入的整数并将'\n'
留在缓冲区中。因此,解决此问题的方法是添加一个sc.nextLine()
来读取剩余的并将其丢弃。这就是您需要在程序中使用这一行代码的原因。