【发布时间】:2021-05-30 14:47:46
【问题描述】:
我对 Java 编码还是很陌生。我现在正在上课学习它,但我遇到了循环问题。
我在这门课上的作业是只为一个计算 3 分加权总和的程序编写一个 while 循环。我正在使用 if else 语句和一个变量来声明它应该在什么用户输入上,但是,如果输入不在某个范围内,我需要它再次向用户询问相同的问题。到目前为止,这只适用于第一个问题,而不适用于其他两个问题。如果输入无效,我将如何再次提出相同的问题?
到目前为止,这是我的代码:
import java.util.Scanner;
public class Lab3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System. in );
double homework;
double midterm;
double finalGrade;
int i = 0;
while (i == 0) {
if (i == 0) {
System.out.print("Enter your HOMEWORK grade: ");
homework = scan.nextInt();
if (homework < 0 || homework > 100) {
System.out.println("[ERR] Invalid input. A homework grade should be in [0, 100].");
} else {
i++;
}
if (i == 1) {
System.out.print("Enter your MIDTERM EXAM grade: ");
midterm = scan.nextInt();
if (midterm < 0 || midterm > 100) {
System.out.println("[ERR] Invalid input. A midterm grade should be in [0, 100].");
} else {
i++;
}
if (i == 2) {
System.out.print("Enter your FINAL EXAM grade: ");
finalGrade = scan.nextInt();
if (finalGrade < 0 || finalGrade > 200) {
System.out.println("[ERR] Invalid input. A FINAL EXAM grade should be in [0, 200].");
} else {
i++;
double totalWeighted = (finalGrade / 200 * 50) + (midterm * .25) + (homework * .25);
System.out.println("[INFO] Student's Weighted Total is " + totalWeighted);
if (totalWeighted >= 50) {
System.out.println("[INFO] Student PASSED the class.");
} else {
System.out.println("[INFO] Student FAILED the class.");
}
}
}
}
}
}
}
}
【问题讨论】:
-
注意:在
while (i == 0)的任何循环的顶部,假设条件为真,所以第一个if语句是多余的 -
我对您的权重(如果可以指定)感兴趣,因为最终成绩已经被加权,因为它的总分可能是其他两个测试的两倍。这意味着您的
totalWeighted可以简化为:(finalGrade + midterm + homework) / 4)。
标签: java loops if-statement calculation