先看问题代码和运行结果
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入一串数字");int i = scanner.nextInt();System.out.println("i:" + i);int z = scanner.nextInt();System.out.println("z:" + z);}
这不就是简单是输入语句,怎么可能有问题!我姥姥来了都不会报错
在这种情况下,z根本没有输入内容,结果程序缺直接结束了
和我开始的定义的语义不同了
我的初衷是先输入一段数字然后输出,再输入一段数字再输出
现在变成了我只要用空格,程序就会认为我是连续输入两次数据
在我的大师帮助下,我知道了原由
先简单的介绍一下计算机的运行逻辑
在运行的时候,会在空间中画出两块区域,堆栈
简单的理解就是,有一个是存放临时变量的
在看看这个问题,就迎刃而解了
scanner.nextInt();读取换行符之前的数据,换行符之后的数据就被放到了叫临时变量区
这就是一个大概的流程
说人话,在使用nextInt的时候,空格后的数据会被存放到临时缓存区,如果后续的代码能用到
就会直接调用
计算机也是懒,为了不做过多的运算,就会直接调用临时缓存区的数据
解决方法,清除运算符——读取运算符!!!!
将这个代码
scanner.nextLine();
添加之他们中间
有人就会问,我不小心按错了怎么办!很好!
之后再解决