当前位置: 首页 > 知识库问答 >
问题:

如何让这个while循环一次只提示用户一次

章兴发
2023-03-14

//基本上我需要提示用户输入等级,并计算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.");
    }
    }

}

共有2个答案

颛孙英才
2023-03-14

如果您正确地格式化了代码,您将看到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
斜宁
2023-03-14

在你的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.");
    }

    }
}
 类似资料:
  • 正如这里看到的,有两种方法可以重复某事很多次。但是它似乎对我不起作用,所以我想知道是否有人能帮忙。 基本上,我想重复以下3次 根据链接所说,这就是我所做的, 但这似乎行不通。while循环只重复一次,而不是三次。有人能帮我解决这个问题吗?

  • 我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。

  • 我发现这样的php代码: 我希望这个循环会执行4次,因为$I变成了对$的引用(对吗?)。然而,循环只执行一次,并输出: a=10,i=10 我不明白为什么它会这样工作。有什么想法吗?

  • 到目前为止,我的计划是: 现在我需要它做的是生成一个从华氏度到摄氏度的20个温度转换表。如果用户输入 0,下面是输出可能是什么样子的前 3 行的示例: 华氏温度:0摄氏度:-17.78 华氏度: 5 摄氏度: -15.00 华氏:10摄氏度-12.22度 等… 问题是,如果输入大于20,它将不会循环正确的次数。 下面是一个例子,说明如果用户输入5: 输出: 输入您的起始温度(华氏:5)。 华氏摄氏

  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。