首先查看一下官方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:hello
s2:
请输入第一个字符串s1:
hello world!
请输入第二个字符串s2:
输入的字符串是:
s1:hello
s2: 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:hello
s2:world!