Java 等级计算器程序
我完全被这个项目困住了,在这个项目中,用户应该输入一个班级的学生人数和参加的考试人数。然后他们输入每个学生的名字,然后在一行空白处输入该学生的考试分数。该程序计算每个学生的平均成绩和相应的字母分数 这就是我到目前为止所做的:Java 等级计算器程序,java,loops,Java,Loops,我完全被这个项目困住了,在这个项目中,用户应该输入一个班级的学生人数和参加的考试人数。然后他们输入每个学生的名字,然后在一行空白处输入该学生的考试分数。该程序计算每个学生的平均成绩和相应的字母分数 这就是我到目前为止所做的: public class proj2 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Welcome to Gr
public class proj2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Welcome to Gradecalculator!");
System.out.println("Please enter the number of students:");
int students = s.nextInt();
System.out.println("Please enter the number of exams:");
int exams = s.nextInt();
int i = 0;
int studentnumber = 1;
int sum = 0;
while (i < students) {
double average = sum/exams;
System.out.println("Enter student " + studentnumber++ + "'s name :");
String studentname = s.next();
System.out.println("Enter exam scores :");
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
if (n < 0) {
System.out.println("Invalid exam scores, reenter: ");
}
}
if (average <= 100 && average >= 90) {
System.out.println("Letter grade: A");
System.out.println(studentname + " gets 4 stars! ****");
} if (average <= 89 && average >= 80) {
System.out.println("Letter grade: B");
System.out.println(studentname + " gets 3 stars! ***");
} if (average <= 79 && average >= 70) {
System.out.println("Letter grade: C");
System.out.println(studentname + " gets 2 stars! **");
} if (average <= 69 && average >= 60) {
System.out.println("Letter grade: D");
System.out.println(studentname + " gets 1 star! *");
} if (average <= 59) {
System.out.println("Letter grade: F");
System.out.println(studentname + " gets 0 stars!");
}
}
}
}
请输入学生人数:
3.
请输入考试次数:
3.
输入学生1的姓名:
山姆
输入考试分数:
80 80 80
字母等级:F
山姆得了0颗星
显然,三个80首先应该是B,所以我显然没有正确计算平均值,但我不知道为什么。您的条件应该是这样的:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND
另一个问题是,在每次迭代中将sum
重置为0,因此实际上没有累计总和
最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。您的条件应如下所示:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND
另一个问题是,在每次迭代中将sum
重置为0,因此实际上没有累计总和
最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。您的条件应如下所示:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND
另一个问题是,在每次迭代中将sum
重置为0,因此实际上没有累计总和
最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。您的条件应如下所示:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:
if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND
另一个问题是,在每次迭代中将sum
重置为0,因此实际上没有累计总和
最后,平均值和所有条件的计算应该在for循环之外,因为您希望在计算平均值之前读取所有输入。您在这里犯了一个小错误
if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为循环声明sum
外部,因为每次它被重置为0
int sum = 0;
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;
您在这里犯了一个小错误
if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明sum
外部,因为每次它被重置为0
int sum = 0;
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;
您在这里犯了一个小错误
if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明sum
外部,因为每次它被重置为0
int sum = 0;
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;
您在这里犯了一个小错误
if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明sum
外部,因为每次它被重置为0
int sum = 0;
for (; i < exams; i++) {
int n = s.nextInt();
sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;
谢谢,我做了更改,但当我为考试分数输入三个100分时,我收到的信息是字母分数为F。我不明白为什么它不能正确计算平均值。啊哈。这是有道理的。好的,我现在在循环外声明了变量,当我输入三个80分时,我的新输出是:字母等级:F约翰得到0颗星!字母等级:F约翰获得0颗星!字母等级:B约翰获得三颗星!***-很明显,我的循环被搞砸了。但至少现在它正确地计算了总和。@sam如果你把你的If
条件移到for循环之外,就像我建议的那样,你应该只得到一个`字母等级:…'的输出。“哦,是的,这是我应该提到的另一件事。当我把If条件移到循环之外时,它告诉我“平均”“无法解析为变量。我是否在错误的位置声明了平均变量?@sam如果要在循环外使用average
,应该在循环外声明。谢谢,我做了那个改变,但当我为考试分数输入三个100分时,我得到的信息是字母分数是F。我不明白为什么它不能正确计算平均值。啊哈。这是有道理的。好的,我现在在循环外声明了变量,当我输入三个80分时,我的新输出是:字母等级:F约翰得到0颗星!字母等级:F约翰获得0颗星!字母等级:B约翰获得三颗星!***-很明显,我的循环被搞砸了。但至少现在它正确地计算了总和。@sam如果你把你的If
条件移到for循环之外,就像我建议的那样,你应该只得到一个`字母等级:…'的输出。“哦,是的,这是我应该提到的另一件事。当我把If条件移到循环之外时,它告诉我“平均”“无法解析为变量。我是否在错误的位置声明了平均变量?@sam如果要在循环外使用average
,应该声明它