【问题标题】:Why is my program only printing one grade?为什么我的程序只打印一个等级?
【发布时间】:2019-05-30 23:27:33
【问题描述】:

编写一个程序来计算学生的平均考试成绩和成绩。您可以 假设以下数据:

Johnson 85 83 77 91 76
Aniston 80 90 95 93 48
Cooper 78 81 11 90 73
Gupta 92 83 30 69 87
Blair 23 45 96 38 59
Clark 60 85 45 39 67
Kennedy 77 31 52 74 83
Bronson 93 94 89 77 97
Sunny 79 85 28 93 82
Smith 85 72 49 75 63

使用三个数组:一个一维数组存储学生姓名,一个(平行)二维数组 存储测试分数的数组,以及存储的并行一维数组 成绩。您的程序必须至少包含以下方法: 读取方法 并将数据存储到两个数组中,一种计算平均考试成绩和成绩的方法。

import java.util.Scanner;
public class Assignment2Ques2 {

【问题讨论】:

  • 当您的代码打印出Grades 时,您如何期望它知道打印出多少个等级?为什么你认为它会输出五个等级?您认为在成绩之间放置空格的代码在哪里?为什么最后一个for 循环有i < Grades.length 作为循环条件?
  • 没有 i.Grades.length 它不会打印任何成绩,除非我完全迷茫和困惑。

标签: java arrays methods


【解决方案1】:

您使用 AvgCal 计算成绩。您的循环结构似乎是

for each of the 10 students
    for each of the 5 marks per student
       calculate the student's average
    end of average calculation
    set one grade for the student based on his average
end of student grade calculation

因此,您可以为每个学生获得一个成绩,因为这就是您计算的全部。事实上,这就是您可以在程序中存储的全部内容:您声明char Grades[10],即您只有一个角色可以为每个学生保存成绩。

您的缩进有点奇怪,因此比应有的更难看到。注意我的伪代码的布局;你的 Java 也应该有类似的缩进。

我认为您实际上已经完成了作业的要求 - 每个学生都会根据他们的平均分数获得一个成绩。为什么你认为他/她应该得到 5 分?

顺便说一句,这个说法

 System.out.println(Studt_Names[i] +":  " +Grades);

将为每个学生打印出一些像“[C@139a55”(相同)这样的网络垃圾,而不是 Grades 数组的内容,当然也不是数组中的单个条目。 Grades[i] 是有道理的。你写的对吗?

【讨论】:

  • 我认为我的代码实际上是正确的,并且假设为他们的平均分数打印一个等级。只是讲师没有明确说明他想要什么作为输出,因为有时他喜欢在最后一刻将自己的东西添加到问题中。我会问他第五次来说明他需要什么,我会告诉你的。如果你和我是对的,那么我很抱歉浪费你的时间,我感觉很糟糕。
  • 不需要道歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多