我的程序假设是提示用户输入与参加多少次考试有关的考试成绩。但是,这很好,当用户输入否定的考试分数时,应该使他们再次重新参加所有三项考试。我的程序会保存所有非负数的考试,因此当您重新参加三门考试时,它仅使用完成三门考试所需的数量或正在寻找的数量。我可能很容易错过一些事情,因为我是新来的。我认为下面的代码足以解决问题,但是,如果这是一个更大的问题,那么我的代码就更多了。

System.out.print("Enter exam scores      :");

for(int y = 1; y <= numberofexams; y++) {
    examgrades = NumScanner.nextDouble();

    while(examgrades < 0) {
        NumScanner.nextLine();
        System.out.print("Invalid exam scores, reenter scores: ");
        examgrades = NumScanner.nextDouble();
    }

    System.out.println();

    if(y > numberofexams)  break;

    sum += examgrades;  //exam average
    sum2 += examgrades; //class average


} // number of exams

最佳答案

我看不到为什么需要while循环,为什么还要扫描nextLine()
试试这个代码:

System.out.print("Enter exam scores      :");

for(int y = 1; y <= numberofexams; y++) {
  examgrades = NumScanner.nextDouble();

  if(examgrades < 0) {
    y = 1;
    continue;
  }

  System.out.println();

  if(y > numberofexams)  break;

  sum += examgrades;  //exam average
  sum2 += examgrades; //class average


} // number of exams

07-26 08:48