在获取用户输入的内容时,我们会使用next()以及nextLine()。同时分别会用hasNext()以及hasNextLine()进行判断。
next():获取并返回 “空格/换行” 之前的有效字符。此外,next()在读取输入后将光标放置在同一行中。
ps:next()在获取并返回有效字符之前不会结束输入。
import java.util.Scanner;
public class Scanner_Test {
public static void main(String[] args) {
// 实例化Scanner对象,获取用户输入
Scanner scanner = new Scanner(System.in);
// 通过next()获取用户输入
System.out.println("通过next()获取用户输入");
String s = scanner.next();
// 输出结果
System.out.println("输入的值为"+s);
// 关闭扫描器
scanner.close();
}
}
控制台结果:
通过next()获取用户输入
//输入空格+换行
//输入换行
ab cd
输入的值为ab
Process finished with exit code 0
hasNext():扫描到 “空格/换行” 之前的有效字符后返回ture。hasNext()通常在使用next()进行判断。
ps:hasNext()在扫描到有效字符前不会结束输入——只能返回true
import java.util.Scanner;
public class Scanner_Test {
public static void main(String[] args) {
// 实例化Scanner对象
Scanner scanner = new Scanner(System.in);
// 在通过next()方法获取用户输入之前,使用hasNext()判断是否具有数据
System.out.println("使用hasNext()判断是否具有数据");
if (scanner.hasNext()){
// 输出用户输入数据
String s = scanner.next();
System.out.println(s);
}else if (!scanner.hasNext()){
System.out.println("用户什么也没有输入");
}
// 关闭扫描器
scanner.close();
}
}
控制台结果:
使用hasNext()判断是否具有数据
//空格+换行
//换行
r rrr
r
Process finished with exit code 0
nextLine():获取并返回 “换行” 前的输入,可以获取空格。nextLine()读取输入后,会将光标定位在下一行。
ps:nextLine()在扫描到换行后会立刻结束输入
import java.util.Scanner;
public class Scanner_Test {
public static void main(String[] args) {
// 实例化Scanner对象
Scanner scanner = new Scanner(System.in);
// 通过nextLine()获取输入
System.out.println("通过nextLine()获取输入");
String nextLine = scanner.nextLine();
// 输入获取的内容
System.out.println("你输入的内容为"+nextLine);
// 关闭扫描仪
scanner.close();
}
}
控制台结果:
通过nextLine()获取输入
//空格+换行
你输入的内容为
Process finished with exit code 0
hasNextLine():扫描到 “换行” 后结束输入并返回true。hasNextLine()通常在使用nextLine()时进行判断。
import java.util.Scanner;
public class Scanner_Test {
public static void main(String[] args) {
// 实例化Scanner对象
Scanner scanner = new Scanner(System.in);
// 在使用nextLine()获取输入之前,通过hasNextLine()判断是否具有内容
System.out.println("通过hasNextLine()判断是否具有输入");
if (scanner.hasNextLine()){
// 输出结果
String s = scanner.nextLine();
System.out.println("你的输入为"+s);
}
// 关闭扫描仪
scanner.close();
}
}
控制台结果:
通过hasNextLine()判断是否具有输入
//空格+换行
你的输入为
Process finished with exit code 0
总结:
next()和nextLine()的区别:
1、next()无法获取空格,nextLine()可以获取空格
2、next()在获取有效字符前无法结束输入,nextLine()在扫描到换行符之后就可以结束输入