Java中Scanner类的next()方法与nextLine()

623 阅读2分钟

最近想着刷力扣或者牛客,从简单的开始刷起,顺便练练手感。
遇到了这么两个函数,Scanner类的next()方法与nextLine(),这两个玩意儿,初学Java的时候经常遇到,实际写项目基本没用过,但是既然遇到了,还是得了解了解。
这两个方法都是从键盘里取出一行字符串,以回车键结束获取

public class Main {
    public static void main(String[] args) {
       // 必须先声明就不说了
        Scanner in = new Scanner(System.in);
        // 返回值都是字符串类型
        String next1 = in.next();
        String next2 = in.nextLine();
}

再来简单介绍一下

  1. next()
    1. 一定要读取到有效字符后才可以结束输入。
    2. 对输入有效字符之前或之后遇到的空白,next() 方法会自动将其去掉。
    3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    4. next() 不能得到带有空格的字符串。

首先是next(),简单来一个代码

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("==============");
        System.out.print("请输入:");
        String next = in.next();
        System.out.println("输出:" + next + "; 长度:" + next.length());
        System.out.println("==============");
    }
}
  1. 输入空格+回车键,程序并不会结束

    image.png

然后接着输入几个字符,再回车,程序结束了,把非空格的字符串输出了,长度也是非空格的字符串长度。

image.png

即使是字符串后带的长度也会被过滤掉

image.png

但是字符串中间空格的话,会将字符串分割成两段,中间空格代表着分割,但依旧不会有空格输出

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("==============");
        System.out.print("请输入:");
        String next = in.next();
        System.out.println("输出:" + next + "; 长度:" + next.length());
        // 每用一次next()方法就代表着从键盘获取一次输入
        String next2 = in.next();
        System.out.println("输出:" + next2 + "; 长度:" + next2.length());
        System.out.println("==============");
    }
}

image.png

  1. nextLine()
    1. 以Enter为结束符, nextLine() 方法返回的是输入回车之前的所有字符。
    2. 可以获得空白。

nextLine()则是完全可以输出空格,不论是纯空格字符串、前空格、中间空格、后空格,都是作为有长度的字符串输出, 由此也可以知道,nextLine()是不会以空格作为结束符的

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("==============");
        System.out.print("请输入:");
        String next = in.nextLine();
        System.out.println("输出:" + next + "; 长度:" + next.length());
        System.out.println("==============");
    }
}

image.png

image.png

image.png

image.png

最好,来自一个被大流淹没的Java菜后端,有错请指出,谢谢。