Java 我怎样才能得到正确的平均分和分数?

Java 我怎样才能得到正确的平均分和分数?,java,Java,这是我现在的代码: package lessons4; public class prog2 { public static void main(String args[]) { int row , col, total=0; int average; int[][] y = {{85,83,77,91,76}, {80,90,95,93,48}, {

这是我现在的代码:

package lessons4;
public class prog2 {

    public static void main(String args[])
    {
        int row , col, total=0;
        int average;
        int[][] y = {{85,83,77,91,76},
                    {80,90,95,93,48},
                    {78,81,11,90,73},
                    {92,83,30,69,87},
                    {23,45,96,38,59},
                    {60,85,45,39,67},
                    {77,31,52,74,83},
                    {93,94,89,77,97},
                    {79,85,28,93,82},
                    {85,72,49,75,63}
                    };

        String[] names = {"Johnson" , "Aniston" ,"Cooper", "Gupta", "Blair", "Clark", "Kennedy", "Bronson", "Sunny", "Smith"};

        System.out.println("Name \tS1 \tS2 \tS3 \tS4 \tS5 \taverage \tgrade ");
        for(row=0; row<=9; row++)
        {
            System.out.print(names[row] + "\t");
            for(col=0; col<=4; col++)
            {
                System.out.print(y[row][col] + "\t");
                total = total + y[row][col];
            }
            average = total/5;
            System.out.println(+average);
        }
    } 
}
如您所见,输出的平均值似乎不正确


第二,我该如何为每个学生分配分数,因为我真的很困惑我该怎么做。

你在正确的轨道上需要做的就是将变量的类型从int和average从int改为double,因此,平均值不会四舍五入到最接近的整数,并将每个学生的合计值重置为0,因此计算的合计值和平均值是针对每个学生的

对于指定字母等级,您可以使用下面的getGrade之类的方法,根据需要进行修改:

class Prog2 {
  public static void main(String args[]) {
    int row, col = 0;
    double average, total = 0;
    int[][] y = {{85,83,77,91,76},
                {80,90,95,93,48},
                {78,81,11,90,73},
                {92,83,30,69,87},
                {23,45,96,38,59},
                {60,85,45,39,67},
                {77,31,52,74,83},
                {93,94,89,77,97},
                {79,85,28,93,82},
                {85,72,49,75,63}
                };

    String[] names = {"Johnson" , "Aniston" ,"Cooper", "Gupta", "Blair", "Clark", "Kennedy", "Bronson", "Sunny", "Smith"};

    System.out.println("Name \t\tS1 \tS2 \tS3 \tS4 \tS5 \tAverage \tGrade ");
    for(row=0; row<=9; row++) {
      System.out.print(names[row] + "\t\t");
      total = 0;
      for(col=0; col<=4; col++) {
        System.out.print(y[row][col] + "\t");
        total = total + y[row][col];
      }
      average = total/5;
      System.out.println(average + "\t\t" + getGrade(average));
    }
  }

  public static String getGrade(double average) {
    if(average > 97) {
      return "A+";
    } else if (average > 93) {
      return "A";
    } else if (average > 90) {
      return "A-";
    } else if (average > 87) {
      return "B+";
    } else if (average > 83) {
      return "B";
    } else if (average > 80) {
      return "B-";
    } else if (average > 77) {
      return "C+";
    } else if (average > 73) {
      return "C";
    } else if (average > 70) {
      return "C-";
    } else if (average > 67) {
      return "D+";
    } else if (average > 63) {
      return "D";
    } else if (average > 60) {
      return "D-";
    } else {
      return "F";
    }
  }
}

你不工作是什么意思?请查看并重试。你的问题一点也不清楚。请阅读。这里有一个语法错误System.out.println+average;。对+average的期望是什么?在内部循环之前缺少total=0。-如果您遵循了良好的编程风格,并在需要的地方声明了局部变量,而不是预先声明,那么这个问题就不会发生。对于int行=0;row@shash678是的,很抱歉我错过了!公共静态字符串getGradedouble平均值{ifaverage>=85&&=75&&&=65&&&=50&&我如何消除这样一个评分的语法错误?在每个if语句的&&之后添加平均值。如果平均值是84.5,那么上面发布的代码不会返回任何评分。你能看到为什么吗?在答案中尝试新的getGrade方法。同时阅读我的答案解释为什么&&部分是多余的。@a8rt请您点击我的答案确认正确,好吗?我会非常感激的。我正在努力争取5000分,泰。我无法将您的答案标记为正确,因为我的重复次数不足15次
class Prog2 {
  public static void main(String args[]) {
    int row, col = 0;
    double average, total = 0;
    int[][] y = {{85,83,77,91,76},
                {80,90,95,93,48},
                {78,81,11,90,73},
                {92,83,30,69,87},
                {23,45,96,38,59},
                {60,85,45,39,67},
                {77,31,52,74,83},
                {93,94,89,77,97},
                {79,85,28,93,82},
                {85,72,49,75,63}
                };

    String[] names = {"Johnson" , "Aniston" ,"Cooper", "Gupta", "Blair", "Clark", "Kennedy", "Bronson", "Sunny", "Smith"};

    System.out.println("Name \t\tS1 \tS2 \tS3 \tS4 \tS5 \tAverage \tGrade ");
    for(row=0; row<=9; row++) {
      System.out.print(names[row] + "\t\t");
      total = 0;
      for(col=0; col<=4; col++) {
        System.out.print(y[row][col] + "\t");
        total = total + y[row][col];
      }
      average = total/5;
      System.out.println(average + "\t\t" + getGrade(average));
    }
  }

  public static String getGrade(double average) {
    if(average > 97) {
      return "A+";
    } else if (average > 93) {
      return "A";
    } else if (average > 90) {
      return "A-";
    } else if (average > 87) {
      return "B+";
    } else if (average > 83) {
      return "B";
    } else if (average > 80) {
      return "B-";
    } else if (average > 77) {
      return "C+";
    } else if (average > 73) {
      return "C";
    } else if (average > 70) {
      return "C-";
    } else if (average > 67) {
      return "D+";
    } else if (average > 63) {
      return "D";
    } else if (average > 60) {
      return "D-";
    } else {
      return "F";
    }
  }
}
Name        S1  S2  S3  S4  S5  Average     Grade 
Johnson     85  83  77  91  76  82.4        B-
Aniston     80  90  95  93  48  81.2        B-
Cooper      78  81  11  90  73  66.6        D
Gupta       92  83  30  69  87  72.2        C-
Blair       23  45  96  38  59  52.2        F
Clark       60  85  45  39  67  59.2        F
Kennedy     77  31  52  74  83  63.4        D
Bronson     93  94  89  77  97  90.0        B+
Sunny       79  85  28  93  82  73.4        C
Smith       85  72  49  75  63  68.8        D+