【问题标题】:Having Trouble with Correct output from If statement [closed]If语句的正确输出有问题[关闭]
【发布时间】:2020-06-14 21:10:39
【问题描述】:

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

如果分数 >= best-10,则成绩为 A

如果分数 >= best-20,则等级为 B

如果分数 >= best-30,则成绩为 C

如果分数 >= best-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");
              }
             }
            }
            }
           }
        `````````````````````````````````````````

【问题讨论】:

  • “我的程序没有产生正确的成绩”到底是怎么回事?你用了什么输入法?你得到了什么输出?你期望的输出是什么?
  • 是否至少正确确定了最大值?
  • 是否至少采用了正确数量的输入?正确存储?有可能被列回输出吗?
  • 所有这些都被认为是基本调试?您还尝试了哪些发现问题的方法?
  • @Yunnosch 我输入了很多分数,但没有一个是正确的。

标签: java arrays loops if-statement


【解决方案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

注意:如果最好成绩是 50 分(满分 100 分),40 到 50 分之间的学生是否还能获得分数'A'? :)

【讨论】:

  • 是的,根据我的作业,如果分数非常低,它仍然应该是 A 级,这很奇怪,但这是我的作业,哈哈
猜你喜欢
  • 1970-01-01
  • 2018-03-23
  • 2021-04-22
  • 2016-06-22
  • 2012-07-01
  • 2013-10-09
  • 2021-11-03
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多