抽象轻松的java

先看问题代码和运行结果

    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);
    }

这不就是简单是输入语句,怎么可能有问题!我姥姥来了都不会报错

抽象轻松的java_第1张图片

在这种情况下,z根本没有输入内容,结果程序缺直接结束了

和我开始的定义的语义不同了

我的初衷是先输入一段数字然后输出,再输入一段数字再输出

现在变成了我只要用空格,程序就会认为我是连续输入两次数据

在我的大师帮助下,我知道了原由

先简单的介绍一下计算机的运行逻辑

在运行的时候,会在空间中画出两块区域,堆栈

简单的理解就是,有一个是存放临时变量的

在看看这个问题,就迎刃而解了

scanner.nextInt();读取换行符之前的数据,换行符之后的数据就被放到了叫临时变量区

抽象轻松的java_第2张图片

这就是一个大概的流程

说人话,在使用nextInt的时候,空格后的数据会被存放到临时缓存区,如果后续的代码能用到

就会直接调用

计算机也是懒,为了不做过多的运算,就会直接调用临时缓存区的数据

解决方法,清除运算符——读取运算符!!!!

将这个代码

scanner.nextLine();

添加之他们中间

抽象轻松的java_第3张图片

有人就会问,我不小心按错了怎么办!很好!

之后再解决

你可能感兴趣的:(java,开发语言)