If语句的正确输出有问题

时间:2020-06-14 21:10:39

标签: java arrays loops if-statement

我可以在分配作业时使用一些帮助。用户必须输入学生人数,然后输入分数,我必须找到最佳分数并相应地分配分数。

如果得分> =最佳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");
              }
             }
            }
            }
           }
        `````````````````````````````````````````

1 个答案:

答案 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'怎么办? :)