输入样例:
3
75 3
53 2
59 2
问题:为什么调试看的第一行读取一个整数没问题,然后读取第二第三行,也没问题,就是读取最后一行来到最后一次for里的nextline就有问题了,一直等待用户输入,如果这时候我敲入一个回车就结束了程序,但就不符合我的代码逻辑了呀,为什么最后一行的读取这么奇怪呢



输入样例:
3
75 3
53 2
59 2
问题:为什么调试看的第一行读取一个整数没问题,然后读取第二第三行,也没问题,就是读取最后一行来到最后一次for里的nextline就有问题了,一直等待用户输入,如果这时候我敲入一个回车就结束了程序,但就不符合我的代码逻辑了呀,为什么最后一行的读取这么奇怪呢



关注【相关推荐】
Scanner类的方法
| 方法名 | 说明 |
|---|---|
| String next() | 查找并返回此扫描仪的下一个完整令牌 不接收空格,在接收有效数据之前,所有的空格或tab键投被忽略,若有有效数据,则遇到这些键退出 |
| int nextInt() | 将输入的下一个标记扫描为int |
| String nextLine() | 将此扫描仪推进到当前行并返回跳过的输入 可以接收空格或tab键,输入以enter键结束 |
代码
// idea_algorithm
package offer2.Test423;
import java.util.Scanner;
public class StringnextLineDemo {
public static void main(String[] args) {
method1();
}
public static void method(){
Scanner input = new Scanner(System.in);
String s1 = input.next();
String s2 = input.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s1 + s2);
// 键盘输入ABC(空格)DEF(空格)(空格)
// 输出结果是:
// ABC
// DEF
// ABCDEF
// 分析:没有接收空格,要是接收了空格,那么最后的输出应该会有空格,ABC 和 DEF 之间的空格被当做 两个字符串之间的划分,表示输入的是两个字符串
}
public static void method1(){
Scanner input = new Scanner(System.in);
String s1 = input.next();
String s2 = input.next();
String s3 = input.nextLine();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1 + s2);
System.out.println(s1 + s2 + s3);
// 键盘输入A(空格)B(空格)C(空格)D(空格)
// 输出结果是:
//A
//B
//(空格)C(空格)D(空格)
//AB
//AB(空格)C(空格)D(空格)
// nextLine()方法可以接收空格或tab键。
}
}