在控制台里输入数据Scanner是最常见的了。但是平时用的时候会提示next()和nextLine()
有时候没注意感觉好像没有差别。后来百度了一下在这里总结一下。Next():
一定要读到有效字符后才可以结束输入,对于输入有效字符之前的遇到的空格键、tab键和enter键为结束的,next(),都将自动去掉。Next()方法将输入字符之后的空格键,tab键enter键视为分割符或者结束符。Next()读取字符串的时候不能读到空格。
NextLine():
结束符号为enter,可以带空格。
第一种情况:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String s1,s2,s3;
s1=sc.next();
System.out.println("这是s1输出的结果:"+s1);
s2=sc.nextLine();
System.out.println("这是s2输出的结果:"+s2);
s3=sc.next();
System.out.println("这是s3输出的结果3:"+s3);
}
}
输出结果:
第一次向控制台输入//输入
这是s1输出的结果:第一次向控制台输入
这是s2输出的结果:
//nextLine()自动读取了被next()去掉的Enter作为他的结束符。这是第二次向控制台输入//输入
这是s3输出的结果3:这是第二次向控制台输入
只能输入两次。
第二种情况:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String s1,s2,s3;
s1=sc.nextLine();
System.out.println("这是s1输出的结果:"+s1);
s2=sc.nextLine();
System.out.println("这是s2输出的结果:"+s2);
s3=sc.nextLine();
System.out.println("这是s3输出的结果3:"+s3);
}
}
结果:
这是第一次向控制台输入
这是s1输出的结果:这是第一次向控制台输入
这是第二次向控制台输入
这是s2输出的结果:这是第二次向控制台输入
这是第三次控制台输入
这是s3输出的结果3:这是第三次控制台输入
可以输入三次。
在每一个next()、nextDouble() 、nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。
第三种情况:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String s1,s2,s3;
s1=sc.next();
sc.nextLine();
System.out.println("这是s1输出的结果:"+s1);
s2=sc.nextLine();
System.out.println("这是s2输出的结果:"+s2);
s3=sc.nextLine();
System.out.println("这是s3输出的结果3:"+s3);
}
}
结果:(与第一种情况比较就清楚了)
第一次输入
这是s1输出的结果:第一次输入
第二次输入
这是s2输出的结果:第二次输入
第三次输入
这是s3输出的结果3:第三次输入
输入三次