啥都不说,我们先上代码和图:
代码1:
package demo;
import java.util.Scanner;
public class TextNext {
public static void main(String[] args) {
Scanner input = new Scanner(System .in);
System.out.println("请输入str1:");
String str1 = input.next();
System.out.println("请输入str2:");
String str2 = input.nextLine();
System.out.println("str1:" + str1);
System.out.println("str2:" + str2);
}
}
输入空格再按Enter
字符之间有空格
输入字符后直接回车
代码2:
package demo;
import java.util.Scanner;
public class TextNext {
public static void main(String[] args) {
Scanner input = new Scanner(System .in);
System.out.println("请输入str1:");
String str1 = input.nextLine();
System.out.println("请输入str2:");
String str2 = input.nextLine();
System.out.println("str1:" + str1);
System.out.println("str2:" + str2);
}
}
先输入空格,字符之间加空格
输入字符后回车
直接回车
综合上面代码的运行结果我们总结出一下结论:
1.使用next()从键盘接收字符时,如果在此之前输入空格、Enter键、Tabd键时会被省略掉,即只next()读取到有效内容时才会进行输入;
2.next()在读取到有效字符后会把之后录入的空格键、Enter键、Tab键视为分隔符或者结束符,所以next()不能接收到带有空格的字符串;
3.nextLine()的结束符只是Enter键,使用nextLine()可以得到带有空格的字符串;
4.这两种方法连用时要注意:使用next()和nextLine()时,可能会出现代码1中不能给str2录入值的情况,原因是nextLine()自动读取了next()中Tab键、空格键、Enter键后面的内容,而nextLine()是可以接收空格的,所以会出现不能从键盘键入str2的情况,解决的方法是在next()的后面接着使用nextLine().