java Scanner next() nextLine()的区别。

来源:互联网 发布:javascript设计模式pdf 编辑:程序博客网 时间:2024/06/05 16:03
首先查看一下官方api文档对此的解释:

next() 

查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。

nextLine()

此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。

因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。

区别:

nextLine()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

nextLine()方法读取一整行,且结束符只能是Enter键


import java.util.Scanner;public class TestScanner {         public static void main(String[] args) {                 Scanner s = new Scanner(System.in);                 System.out.println("请输入字符串:");                 while (true) {                         String line = s.next();                         if (line.equals("exit")) break;                         System.out.println(">>" + line);                 }         } }

运行结果:

请输入字符串:hello world!>>hello>>world!

import java.util.Scanner;public class TestScanner {         public static void main(String[] args) {                 Scanner s = new Scanner(System.in);                 System.out.println("请输入字符串:");                 while (true) {                         String line = s.nextLine();                         if (line.equals("exit")) break;                         System.out.println(">>" + line);                 }         } }

运行结果:

请输入字符串:hello world!>>hello world!

nextLine()会自动读取了被next()去掉的Enter作为其结束符:

import java.util.Scanner;public class TestScanner {    public static void main(String[] args) {        while(true){            String s1,s2;              Scanner sc=new Scanner(System.in);              System.out.println("请输入第一个字符串s1:");              s1=sc.next();              System.out.println("请输入第二个字符串s2:");              s2=sc.nextLine();              System.out.println("输入的字符串是:");             System.out.println("s1:" + s1);             System.out.println("s2:" + s2);         }}
运行结果:

请输入第一个字符串s1:hello请输入第二个字符串s2:输入的字符串是:s1:hellos2:请输入第一个字符串s1:hello world!请输入第二个字符串s2:输入的字符串是:s1:hellos2: world!


解决:

如果在nextLine()方法之前使用了next() 和 及其基本类型 companion 方法(如 nextInt() 等)
在next()方法后加上一个nextLine()语句,将被next()去掉的Enter结束符过滤掉:

import java.util.Scanner;public class TestScanner {    public static void main(String[] args) {        while(true){            String s1,s2;              Scanner sc=new Scanner(System.in);              System.out.println("请输入第一个字符串s1:");              s1=sc.next();              System.out.println("请输入第二个字符串s2:");              sc.nextLine();            s2=sc.nextLine();              System.out.println("输入的字符串是:");             System.out.println("s1:" + s1);             System.out.println("s2:" + s2);         }    }
运行结果:

请输入第一个字符串s1:hello请输入第二个字符串s2:world!输入的字符串是:s1:hellos2:world!



0 0
原创粉丝点击