1.sc.next()
1)一定是在输入有效字符串后才结束输入。(空格键(\s)、Tab键(\t)或Enter键(\r)等都是非有效字符)一但输入有效字符后,遇到空格键(\s)、Tab键(\t)或Enter键(\r)直接结束输入。
2)从1)我们可以知道sc.next()输入法是不能接收:空格键(\s)、Tab键(\t)或Enter键(\r)字符的
3)详情见代码:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/*输入:输入有效字符后遇到回车换行直接结束输入
IamChinese.
I love my motherland.
*/
String st1 = sc.next();//此时str1直接收了“IamChinese.”
/*输出结果如下:
IamChinese.
*/
System.out.println();//让输入和输出不在同一行,方便观察结果
System.out.println(st1);
/*输入:第一个有效字符‘I’前含有回车和空格还有tab
I am Chinese.
I love my motherland.
*/
String st2 = sc.next();
/*首个有效字符前的回车、空格、tab都不会被输入,
当输入有效字符后遇到回车或空格或tab直接结束输出.
输出结果如下:
I
*/
System.out.println();
System.out.println(st2);
}
}
输出结果如图所示:
2.sc.nextLine()
1)回车键(\r)前的所有字符都能接收,遇到回车键(\r)结束输入;
2)从1)可知sc.nextLine是不能接收回车键的(\r),即一个sc.nextLine只接收一行字符串不含回车键;
3)当我们一次输入多行字符串时,输入多次时,,它会优先前面的输入,直到前面的输入接收完才接收后面的输入;
3)祥情见代码
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/*输入含tab、空格、回车
I am Chinese.第一次输入
I love my motherland.第一次输入
*/
String str1 = sc.nextLine();
System.out.println();
System.out.println(str1);
/*输入:一开始是回车键,直接结束
I am Chinese.第二次输入
I love my motherland.第二次输入
*/
String str2 = sc.nextLine();
System.out.println();
System.out.println(str2);//此时 str2==null
}
}
输出如图所示: