为什么在使用nextLine接收时我没键盘输入他就继续跑完了

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
package Scanner;

import java.util.Scanner;

public class Happy01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");
        if (scanner.hasNext()){
            String str1 = scanner.next();
            System.out.println("输出内容为:"+str1);
        }
        System.out.println("==================================");
        System.out.println("使用nextLine方式接收:");
        if (scanner.hasNextLine()){
            String str2 = scanner.nextLine();
            System.out.println("输出内容为:"+str2);
        }
        scanner.close();
    }
}
运行结果及报错内容

使用next方式接收:
hello world
输出内容为:hello
==================================
使用nextLine方式接收:
输出内容为: world

我的解答思路和尝试过的方法
我想要达到的结果

为什么在使用nextLine接收时我没键盘输入他就继续跑完了

因为有缓存,重新创建一个输入流。

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");
        if (scanner.hasNext()){
            String str1 = scanner.next();
            System.out.println("输出内容为:"+str1);
        }
        System.out.println("==================================");
        System.out.println("使用nextLine方式接收:");
        scanner = new Scanner(System.in);
        if (scanner.hasNextLine()){
            String str2 = scanner.nextLine();
            System.out.println("输出内容为:"+str2);
        }
        scanner.close();
    }
}

img

你的第 9行 是has.next()
此方法,在命令行 会接收回车 之前的输入内容
回车会作为 空格 null 留在 命令行
所以下一次 从命令行获取 内容的时候 ,会录入进去
望采纳!