📅  最后修改于: 2023-12-03 15:31:49.205000             🧑  作者: Mango
在Java编程中,Scanner是一个常用的类,可以读取控制台输入或文件中的数据。其中,Scanner类中有两个方法sc.nextLine()和sc.next()非常相似,但是有一些细微的差别。下面我们将详细介绍这两个方法的区别。
sc.nextLine()方法可以读取整行的输入,包括空格。它会读取输入直到找到回车符(\n),并返回该行字符串。例如:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一行文字:");
String text = sc.nextLine();
System.out.println("您输入的是:" + text);
运行效果如下:
请输入一行文字:
hello world
您输入的是:hello world
在上述代码中,当我们输入"hello world"时,sc.nextLine()会读取整行输入并返回字符串"hello world"。
需要注意的是,如果在读取字符串之前有一个sc.nextInt()(或其他读取方法)调用,它会留下一个空白字符或回车符(由于在读取int时会读取到回车符)以防止该字符被后续的nextLine读取。例如:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = sc.nextInt();
System.out.println("请输入一行文字:");
String text = sc.nextLine();
System.out.println("您输入的整数是:" + num);
System.out.println("您输入的文字是:" + text);
运行效果如下:
请输入一个整数:
20
请输入一行文字:
您输入的整数是:20
您输入的文字是: (这里是空格)
在上述代码中,我们首先读取了一个整数20,然后调用了sc.nextLine()方法来读取下一行文字。由于在读取整数时,输入缓冲区会有一个回车符,因此调用nextLine()时会读取该回车符,并返回一个空格字符。
sc.next()方法可以读取下一个单词或token,也就是以空格分隔的字符串。它会读取输入直到找到空格或回车符(\n),并返回该字符串。例如:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个单词:");
String word = sc.next();
System.out.println("您输入的是:" + word);
运行效果如下:
请输入一个单词:
hello world
您输入的是:hello
在上述代码中,我们首先输入了"hello world",sc.next()会读取第一个单词"hello"并返回。
需要注意的是,如果输入缓冲区中没有剩余的单词或token(即已经全部读取完毕),则next()方法将会在读取到回车符(\n)时阻塞程序。因此,在使用next()方法时要确保输入缓冲区中有剩余的单词或token。