Java 为什么我的for循环在没有条件语句的情况下跳过我的scanner函数之一
所以我有一个代码,我正在工作,它应该根据输入来计算用户的GPA,我已经做了一个方法来问用户一系列的问题,我的目标是得到这样的输出 课程1: 类别:用户输入 是AP:用户输入 等级:用户输入 课程2: 类别:用户输入 是AP:用户输入 等级:用户输入 课程3: 类别:用户输入 是AP:用户输入 等级:用户输入 课程4: 类别:用户输入 是AP:用户输入 等级:用户输入 为了做到这一点,我制定了以下代码Java 为什么我的for循环在没有条件语句的情况下跳过我的scanner函数之一,java,Java,所以我有一个代码,我正在工作,它应该根据输入来计算用户的GPA,我已经做了一个方法来问用户一系列的问题,我的目标是得到这样的输出 课程1: 类别:用户输入 是AP:用户输入 等级:用户输入 课程2: 类别:用户输入 是AP:用户输入 等级:用户输入 课程3: 类别:用户输入 是AP:用户输入 等级:用户输入 课程4: 类别:用户输入 是AP:用户输入 等级:用户输入 为了做到这一点,我制定了以下代码 public static void askQuestions() { Scann
public static void askQuestions()
{
Scanner input = new Scanner(System.in);
for (int i = 1; i < 5; i++)
{
System.out.println("Course " + i + ":");
System.out.print(" Class: ");
String courseName = input.nextLine();
System.out.print(" is AP: ");
String answer = input.nextLine();
System.out.print(" Grade: ");
int Grade = input.nextInt();
}
}
publicstaticvoidaskquestions()
{
扫描仪输入=新扫描仪(System.in);
对于(int i=1;i<5;i++)
{
System.out.println(“课程“+i+”:”);
系统输出打印(“类:”);
字符串courseName=input.nextLine();
系统输出打印(“is AP:”);
字符串answer=input.nextLine();
系统输出打印(“等级:”);
int Grade=input.nextInt();
}
}
但我的结果是
课程1:
类别:用户输入
是AP:用户输入
等级:用户输入
课程2:
类别:是AP:用户输入
等级:用户输入
课程3:
类别:是AP:用户输入
等级:用户输入
课程4:
类别:是AP:用户输入
等级:用户输入
就像第一个循环一样,可以,但循环的其余部分不行。我做错了什么?input.nextInt();只读取整数,并且新行符号(\n)仍然保留,因此后续的nextLine reada会读取此\n,
\n是回车键
看起来像这样
类别:A\n(全部读取)
是AP:something\n(读取全部)
等级:23\n(仅读23)
类别:\n(来自上一个输入)
您应该像这样编写Integer.parseInt(input.nextLine())input.nextInt();只读取整数,并且新行符号(\n)仍然保留,因此后续的nextLine reada会读取此\n,
\n是回车键
看起来像这样
类别:A\n(全部读取)
是AP:something\n(读取全部)
等级:23\n(仅读23)
类别:\n(来自上一个输入)
您应该这样写。parseInt(input.nextLine())OK所以基本上当按下enter键时,代码中有一个不可见的“\n”,并且nextLine代码将“\n”作为字符串读取?是的,类似这样。因此,nextLine使用\n作为分隔符,nextLine按数字读取数字作为示例,如果scanner得到1 2 3\n 4 5 6,第一个nextLine调用返回1 2 3,第二个4 5 6您还可以编写Integer Grade=input.nextInt();input.nextLine();要跳过\nokok,那么基本上当按下enter键时,代码中有一个不可见的“\n”,下一行代码将“\n”作为字符串读取?是的,类似这样。因此,下一行使用\n作为分隔符,下一行按数字读取数字例如,如果扫描程序得到1 2 3 \n 4 5 6,第一个下一行调用将返回1 2 3,第二个4 5 6您还可以编写Integer Grade=input.nextInt();input.nextLine();跳过\n