在说它俩的不同之处前,先说说它俩的相同之处:
next() 和 nextLine() 读取的结果都是 String 类型,返回 string 类型
java 中 Scanner 类中的 next() 方法和 nextLine() 方法的区别:
- next() 不会读取字符前/后的空格/Tab键,只读取字符(忽略空格回车等等),开始读取字符(字符前后不算)直到遇到空格/Tab键/回车截止;( 包括nextInt()、nextDouble()、nextFloat()等 )遇到了空格, 就不再录入数据了 。
结束标记: 空格, tab键。
- nextLine() 读取字符前后的空格/Tab键,直到回车键截止。可以将数据完整的接收过来。读取一行,注意到如果是一行的话,空格不作为分隔符,一行一行的取,以回车(换行)结束一次取值
结束标记: 回车换行符。
测试代码:
package test;
import java.util.*;
public class Main {
public static void main(String[] args) {
String s1,s2;
Scanner sca = new Scanner(System.in);
System.out.print("请输入第一个字符串:");
s1 = sca.nextLine();
System.out.println("输入的字符串是:" + s1);
System.out.print("请输入第二个字符串:");
s2 = sca.next();
System.out.println("输入的字符串是:" + s2);
}
}
运行结果:
请输入第一个字符串: hello
输入的字符串是: hello
请输入第二个字符串: world
输入的字符串是:world
注意:nextLine() 不能用在 nextIn() 后面。
因为nextLine() 方法返回的是Enter键之前的所有字符,在使用了 nextInt() 方法之后在其后输入的空格键、Tab 键或 Enter 键等视为分隔符或结束符,其仍在缓冲区内;若紧接着使用 nextLine() ,则 nextLine() 自动读取 Enter 等作为其结束符,则无法从键盘输入值,强行输入会报出 InputMismatchException 异常。