Scanner类中next()和nextLine()方法连用时注意事项
昨天在练习关于String的练习时,输入以下代码:
public class Practise {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("请输入字符串:");
String str=sc.next();
System.out.println("请输入子字符串:");
String substr=sc.nextLine();
}
运行结果如下:
run:
请输入字符串:gugua gu
请输入子字符串:
成功生成(总时间:9 秒)
提示我输入第一个以后,第二个就没有提示,直接输出结果,那么这是为什么呢?
个人解析如下:
1.next()和nextLine()方法的表象区别是前者读取的是“一段”字符串,而nextLine读取的是一行字符串。
2.next从一行中读取字符串,当遇到特定的标识符:空格或者换行符(/n),获取其当前的字符串(如果你想把空格要当作输入的字符串,那么必须用nextLine()方法,我同学就遇到这样的问题,结果输入的字符串到空格就结束)。
3.nextLine()方法则直到遇到换行符(/n)才会结束。
分析结果:在上面的输入中gugua遇到空格符,next()方法实际上就已经结束,然后它就把换行符(/n)丢给nextLine去处理。
总结:在需要提示输入的方法中,尽量少用next()方法,多用nextLine()方法

浙公网安备 33010602011771号