【问题标题】:How to I get this while loop to only prompt the user once at a time如何让这个while循环一次只提示用户一次
【发布时间】:2021-02-26 22:08:03
【问题描述】:

// 基本上我需要提示用户输入成绩并计算 A 和 B 的数量等等。我无法弄清楚如何让循环在每个用户输入时循环一次。它只是垃圾邮件 输入考试成绩。 编辑感谢大家的帮助,我想通了!

public static void main(String[] args) {
    Scanner input = new Scanner(System.in); 
    int numAs = 0;
    int numBs = 0;
    int numCs = 0;
    int numFs = 0;
    int grade = 0;
    while (grade >= 0 && grade <= 100)
    System.out.println("Enter an exam grade");
    grade = input.nextInt();
    if (grade >= 90) {numAs++;
    }else if (grade >=80 && grade<= 89 ) {numBs++;
    }else if (grade >= 70 && grade <= 79) {numCs++;
    }else if (grade <= 69) {numFs++;
    }else if (grade < 0 || grade > 100) {System.out.println("Error invalid grade entered.");
    }
    }

}

【问题讨论】:

  • 我已经删除了 javascript 标签。注意 Java 和 JavaScript 是完全不同的编程语言。
  • while (grade &gt;= 0 &amp;&amp; grade &lt;= 100) 您在这里缺少{

标签: java


【解决方案1】:

您的 while 语句后缺少大括号。如果没有指定花括号,while 循环只包含下面的语句,而不是整个块。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in); 
    int numAs = 0;
    int numBs = 0;
    int numCs = 0;
    int numFs = 0;
    int grade = 0;
    while (grade >= 0 && grade <= 100){
    System.out.println("Enter an exam grade");
    grade = input.nextInt();
    if (grade >= 90) {numAs++;
    }
    else if (grade >=80 && grade<= 89 ) {numBs++;
    }
    else if (grade >= 70 && grade <= 79) {numCs++;
    }
    else if (grade <= 69) {numFs++;
    }
    else if (grade < 0 || grade > 100) {System.out.println("Error invalid grade entered.");
    }

    }
}

【讨论】:

    【解决方案2】:

    如果您正确格式化代码,您会看到您的 While 循环没有花括号,因此它仅包含以下行。

    Scanner input = new Scanner(System.in);
    int numAs = 0;
    int numBs = 0;
    int numCs = 0;
    int numFs = 0;
    int grade = 0;
    while (grade >= 0 && grade <= 100) 
        System.out.println("Enter an exam grade");
        //WHILE ENDS HERE
    grade = input.nextInt();
    if (grade >= 90) {
        numAs++;
    } else if (grade >= 80 && grade <= 89) {
        numBs++;
    } else if (grade >= 70 && grade <= 79) {
        numCs++;
    } else if (grade <= 69) {
        numFs++;
    } else if (grade < 0 || grade > 100) {
        System.out.println("Error invalid grade entered.");
    }
    

    即使您添加了缺少的{,它也不能解决多个问题 - 输入不正确会发生什么;以及如何正确停止循环。所以综合考虑,这可能会好一些:

    Scanner input = new Scanner(System.in);
    int numAs = 0, numBs = 0, numCs = 0, numFs = 0;
    int grade = 0;
    String in = "";
    while (true) {
        System.out.println("Enter an exam grade or Q to exit");
        //WHILE ENDS HERE
        in = input.nextLine();
        if ("Q".equals(in)) {
            System.out.println("That's it!");
            break;
        }
        try {
            grade = Integer.parseInt(in); //get caught if not a num
            if (grade < 0 || grade > 100) { //gets caught if bad num
                throw new Exception();
            }
        } catch (Exception e) {
            System.out.println("Error invalid grade entered.");
        }
        if (grade >= 90)
            numAs++;
        else if (grade >= 80 && grade <= 89)
            numBs++;
        else if (grade >= 70 && grade <= 79)
            numCs++;
        else if (grade <= 69)
            numFs++;
        System.out.println("Saved.");
    }
    //Continue after breaking the loop
    

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2011-11-02
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多