2013-04-25 75 views
1

所以首先,如果我要求你做我的功课时出现这种情况,对不起,只是我你不是,这个问题只涉及到一个小小的方面正在制作的整个程序...换句话说,这是不完成的。如何在循环中列出多维数组值

我会问我的老师,但它的在线课程。所以我会问我的朋友们的建议,但我是学校参加计算机科学课程的唯一孩子。 (这是一所小学校)

反正这个程序完成后,会让老师输入一个学生名单,每个学生四个年级。最后,我会添加一些代码,让老师找到每个学生的平均等等等。

但是目前我只在上市学生的过程中。哪里出现小问题...

每次我列出一个学生(他们的姓氏和名字)以及四个考试成绩,都会很好地输出。然而,当我输出第二名学生的名字不同而且考试成绩不同时,会输出不同的名字......但是前一名学生的考试成绩。

Ex。

约翰·史密斯:67 68 57 87

李四:67 68 57 87(即使它应该李四:54 68 75 91)

而且很显然这是一个问题......因为所有学生没有完全相同的成绩......曾经..

下面

好的代码...

public class StudentGradesView extends FrameView { 
    int [][] aryStudent = new int [15][4]; //[15] being number of students and [4] being test scores... 
    String[] studentNames = new String[15]; // I'm thinking this is might unnecessary now...but we'll see 
    int numOfStudents = 0; //starting number of students at 0.... 

    int marks = 0; 

    int test1; 
    int test2; 
    int test3; 
    int test4; 

    public StudentGradesView(SingleFrameApplication app) { 
     //unimportant...just stuff added for GUI.. 
    } 

    private void addButtonActionPerformed(java.awt.event.ActionEvent evt) { 
     //test1Field through test4Field are the test scores.... 
     aryStudent[numOfStudents][0] = Integer.parseInt(test1Field.getText()); 
     aryStudent[numOfStudents][1] = Integer.parseInt(test2Field.getText()); 
     aryStudent[numOfStudents][2] = Integer.parseInt(test3Field.getText()); 
     aryStudent[numOfStudents][3] = Integer.parseInt(test4Field.getText()); 

     StringBuilder sb = new StringBuilder(); 

     for (int x=0; x < numOfStudents ; x++) { 
      sb.append(firstNameField.getText() + " " + lastNameField.getText()); 
      for (int y=0; y < 4; y++) { 
       sb.append(" " +aryStudent[x][y]); 
      } 
      sb.append("\n"); 
     } 
     studentListField.setText(sb.toString()); 
     numOfStudents ++; 
    }           
} 
+0

如何将'numOfStudents'和'x'的值添加为调试输出,以便更好地跟踪问题。 – Sentry 2013-04-25 15:57:25

+0

您不在任何地方存储学生姓名。每次他们按下按钮时,都会获得当前的学生姓名,但似乎并未保存。它只是将其与其他数据一起写入studentFieldList,但每次按下按钮时都会覆盖它。 – Jason 2013-04-25 18:00:02

回答

0

首先,你要

for (int x=0; x<= numOfStudents; x++) 

或者当numOfStudents = 0时,你将永远不会进入循环。

此外,addButtonActionPerformed有一个for循环,其中包含您给我们的代码?否则,似乎每次进入该方法时,numOfStudents都将为0,当您退出时它将为1,但代码仅针对numOfStudents = 0执行。我是否错过了某些内容?

+0

有一个“numOfStudents ++;”在循环之后,我相信这会改变它最初等于0的方式吗?此外,在第一个循环中添加了等号也解决了我的测试分数问题,但是现在它为每个学生保留相同的名称,但不同的成绩。如果我要使用我的字符串“String [] studentNames = new String [15];”并添加studentNames [numOfStudents] = firstNameField.getText()+“”+ lastNameField.getText();“”我的循环中的某处,你认为这会解决新名称问题吗? – Que 2013-04-25 15:54:45

+0

条件x <= numOfStudents将在x = 15时抛出ArrayIndexOutOfBoundsException。为了更安全你可以有(x <= numOfStudents && x <15) – jittakal 2013-04-25 16:19:54

+0

你在哪里实际填充名字的aryStudent? – Melanie 2013-04-25 16:20:51