Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的for循环在没有条件语句的情况下跳过我的scanner函数之一_Java - Fatal编程技术网

Java 为什么我的for循环在没有条件语句的情况下跳过我的scanner函数之一

Java 为什么我的for循环在没有条件语句的情况下跳过我的scanner函数之一,java,Java,所以我有一个代码,我正在工作,它应该根据输入来计算用户的GPA,我已经做了一个方法来问用户一系列的问题,我的目标是得到这样的输出 课程1: 类别:用户输入 是AP:用户输入 等级:用户输入 课程2: 类别:用户输入 是AP:用户输入 等级:用户输入 课程3: 类别:用户输入 是AP:用户输入 等级:用户输入 课程4: 类别:用户输入 是AP:用户输入 等级:用户输入 为了做到这一点,我制定了以下代码 public static void askQuestions() { Scann

所以我有一个代码,我正在工作,它应该根据输入来计算用户的GPA,我已经做了一个方法来问用户一系列的问题,我的目标是得到这样的输出

课程1:

类别:用户输入

是AP:用户输入

等级:用户输入

课程2:

类别:用户输入

是AP:用户输入

等级:用户输入

课程3:

类别:用户输入

是AP:用户输入

等级:用户输入

课程4:

类别:用户输入

是AP:用户输入

等级:用户输入

为了做到这一点,我制定了以下代码

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