2009-12-08 42 views
-1

我试图让程序让我输入用户名称,然后标记并显示平均值。这是我试过的:为什么我的考试没有将平均代码工作?

// 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); 
} 

} 

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

+3

寻求帮助的可怕方法。 – pstanton 2009-12-08 11:02:58

+0

它是做什么的? – nes1983 2009-12-08 11:08:44

+0

还有什么其他的方式可以问我一个我会 – 2009-12-08 11:08:59

回答

2

一些提示和意见:

  1. 我想你想进入1学生和10标记和计算平均为学生。因此,您可能不需要名称数组(您只能获得一个名称)
  2. name仅在块内部可见。如果您需要该块以外的名称,请移除大括号。
  3. 您的平均值计算,你可以尝试铸造整数值的两倍,像(double) total/(double) SIZE)(即使铸造只是一个值应该足够)

图形界面使用的问题 - 你导入自定义库,敢打赌,你有要仔细检查手册如何使用它。

编辑

您的评论改变这一点;)通常,您现在将创建一个小班像Result保存一个studentName属性和mark属性(简化:我们假设所有的学生都有唯一的名称,所以我们不需要这里的studentID)。

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

下面的代码演示流程:

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好,但我认为这是很容易得到理解,并得到一个解决方案。

+0

即时通讯寻找输入10名学生的名字和10名学生的成绩,然后平均。 – 2009-12-08 11:19:06

+0

谢谢你,认为我应该使用数组 – 2009-12-08 12:02:59

相关问题