为什么我的考试标记平均代码不起作用?

时间:2009-12-08 10:55:20

标签: java

我正在尝试让程序让我输入用户名,然后输入标记并显示平均值。这就是我尝试过的:

// Calculate Students Average of series of exam marks stored in an array
import uulib.GUI;

public class ExamMarks {

  public static void main(String[] args) {

    final int SIZE = 10;

    int[] marks = new int[SIZE];

    double total, average;

    String[] names = new String[]{""};


    // Read marks into array
    {
      String name;
      name = GUI.getString("Enter your name");
      GUI.show("Names"); 
    }

    for(int i=0; i<marks.length; i++) {
        marks[i] = GUI.getInt("Enter mark " + (i+1));
    }

    total = 0;
    // calculate average mark
    for(int i=0; i<marks.length; i++) {
        total = total + marks[i];
    }

    average = total/SIZE; 
    GUI.show("Average mark is " + average);
 }

}

我希望它要求一个名字然后标记十次,最后显示平均值。但它只问我一个名字,之后它要求我十分,并给我一个平均值。

1 个答案:

答案 0 :(得分:2)

一些提示和观察:

  1. 我想你要输入1个学生和10个分数并计算该学生的平均分。所以你可能不需要名字数组(你只得到一个名字)
  2. name仅在块内可见。如果您需要该块之外的名称,只需删除花括号。
  3. 对于您的平均计算,您可以尝试将整数值转换为加倍,例如(double) total / (double) SIZE)(即使只投出一个值就足够了)
  4. 对于GUI使用问题 - 您导入自定义库,打赌您必须仔细检查手册以了解如何使用它。

    修改

    您的评论稍有改变;)通常您现在会创建一个像Result这样的小类,其中包含studentName属性和mark属性(为简化起见:我们假设所有学生有唯一的名称,所以我们这里不需要学生ID。

    如果您在没有类的情况下更好地解决任务,我们可以使用数组模拟它,一个用于名称,一个用于标记。

    以下代码演示了该流程:

    public void process() {
      final int SIZE = 10;
      String[] names = new String[SIZE];
      int[] marks = new int[SIZE];
      for(int i = 0; i < SIZE; i++) {
        names[i] = readStudentNameFromGUI();
        marks[i] = readStudentsMarkFromGUI();
      }
      double average = calculateAverage(marks);
    }
    

    注意:有些事情你可以(应该)在Java中做得更好,但我认为这很容易理解并获得解决方案。