我查看了以前的帖子,仍然无法理解“消费线”概念在这里发生了什么。有人可以慢慢地,一步一步地解释程序正在读取/做的事情,跳过字符串输入
下面是代码:
import java.util.Scanner; public class consumeScannerNextLine {
public static void main (String args []){
Scanner key = new Scanner(System.in);
System.out.println("number1: ");
int num1 = key.nextInt();
System.out.println("number2: ");
String num2 = key.nextLine();
System.out.println("number3: ");
int num3 = key.nextInt();
System.out.println("");
System.out.println("");
System.out.println(num1 + " One");
System.out.println(num2 + " Two");
System.out.println(num3 + " Three");
}
}
输出:
number1:
10
数字2: number3:
10
10一 二 10三
所以我按照建议读了下面的其他帖子,发现其中一个答案有帮助,但仍然不清楚。
“这是因为当你输入一个数字然后按Enter键时,input.nextInt()只消耗数字,而不是”行尾“。当input.nextLine()执行时,它会消耗”行尾“在第一个输入的缓冲区中。
相反,请在input.nextInt()“
之后立即使用input.nextLine()我的问题是,消费结束是什么意思?如果它消耗了行的末尾,那么与跳过诸如字符串的新输入有什么关系呢?这似乎是java中的一个大缺陷
此外,那么声明究竟是什么呢 System.out.println(“number2:”); String num2 = key.nextLine(); 做?什么存储在字符串变量num2中以及之前/之后会发生什么?