我可以在分配作业时使用一些帮助。用户必须输入学生人数,然后输入分数,我必须找到最佳分数并相应地分配分数。
如果得分> =最佳10,则得分为A
如果得分> =最佳20,则得分为B
如果得分> =最佳30,则等级为C
如果得分> =最佳40,则得分为D
否则成绩为F
我的程序目前无法产生正确的成绩,因此我尝试在if但没有任何变化之前放置另一个for循环,然后尝试使用另一个变量(用j代替i),但是有点卡住了。我是java的新手,所以我们将不胜感激,并先谢谢您:)
以下是输入和输出的示例:
输入学生人数:4
输入4个分数:45 90 78 23
0级学生的成绩是:A
学生1年级是:A
学生2年级为:A
学生3年级是:C
很难确定是否确定了最佳分数,因为它赋予其他数字相同的分数,许多其他数字作为输入也会发生这种情况。
``````````````````````````````````````````````
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of students: ");
int students = input.nextInt();
int[] grades = new int [students];
System.out.print("Enter " + students + " scores: ");
for(int i=0; i<students; i++){
grades[i] = input.nextInt();
}
int max = grades[0];
for(int i = 0; i<grades.length; i++){
if(grades[i] > max){
max = grades[i];
}
for(i = 0; i<grades.length; i++){
if (grades [i] >= max-10){
System.out.println("Student " + i + " score is: A");
}else if (grades[i] >= max-20){
System.out.println("Student " + i + " grade is: B");
}else if (grades [i] >= max-30){
System.out.println("Student " + i + " grade is: C");
}else if (grades[i] >= max-40){
System.out.println("Student " + i + " grade is: D");
}else{
System.out.println("Student " + i + " grade is: F");
}
}
}
}
}
`````````````````````````````````````````
答案 0 :(得分:1)
通常来说,您的代码很好,计算max
成绩时遇到了问题:
int max = grades[0];
for(int i = 1; i < grades.length; i++ ) {
if(grades[i] > max) {
max = grades[i];
}
} // this loop should end before scoring all students
for (int i = 0; i < grades.length; i++ ) {
char score = 'F';
if (grades[i] >= max-10) score = 'A';
else if (grades[i] >= max-20) score = 'B';
else if (grades[i] >= max-30) score = 'C';
else if (grades[i] >= max-40) score = 'D';
System.out.println("Student " + i + " grade=" + grades[i]+ ", score is: " + score);
}
输出:
Student 0 grade=45, score is: F
Student 1 grade=90, score is: A
Student 2 grade=78, score is: B
Student 3 grade=23, score is: F
注意:如果最好的分数是100分中的50分,那分数从40到50的学生应该仍然获得分数'A'
怎么办? :)