2013-04-29 47 views
0

好的,這是一個列出學生姓名和考試成績的程序。我已經搞清楚了,但只有一件小事。我必須列出學生的姓名......然後允許我將另一名學生添加到列表中,而不必重複完全相同的名稱。 (請參閱標記爲1和2的行)多維數組輸出爲空

第一行收集教師將輸入的firstNameField和lastNameField的名稱......第二行將爲該數組「向上移動」,以確保名稱不會當添加另一名學生時重複。

可惜......每次另一名學生加入它看起來有點somethnig這樣的...

例:

簡Doenull 65 76 45 89簡Doenull 65 87 45 76 約翰Smithnull 65 76 45 89

你可以清楚地看到問題....「空」是存在的,再加上是重複第二個名稱(Jane Doe的)

所以,我應該怎麼做才能避免這種情況?

公共類StudentGradesView擴展FrameView {

int [][] aryStudent = new int [15][4]; //number of student (15) test scores (4 scores) 
String[][] aryNames = new String[15][2]; //lists the names of students 
int numOfStudents = 0; //starts off students from zero... 
int marks = 0; 

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

public StudentGradesView(SingleFrameApplication app) { 

// GUI的東西...

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {           

    String currentList = studentListField.getText(); 

    //Collects integers from test1Field though test4Field 
    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<15; x++) { 
     sb.append(firstNameField.getText()).append(" ").append(lastNameField.getText()); //(1) 
     sb.append(aryNames[x][0]); //(2) 
     for (int y=0; y < 4; y++) { 
      sb.append(" ").append(aryStudent[x][y]); 
      studentListField.setText(sb.toString() + "\n" + currentList); 
     } 
     sb.append("\n"); 

    } 
    numOfStudents ++; 
} 

新增:所以出現「sb.append(aryNames [X] [0] ); //(2)「是沒有意義的,沒有它沒有名稱重複,除了它輸出爲...示例

Mary Jones 56 76 56 87 約翰·史密斯45 45 45 45 約翰·史密斯45 45 45 45

所以它重複兩次添加第二個名稱。

回答

0

你在哪裏把數據放入aryNames?

您初始化:

String[][] aryNames = new String[15][2]; //lists the names of students

,然後你使用它:

sb.append(aryNames[x][0]); //(2)

但它填充在哪裏?它是唯一一次引用它,並且在你追加名字後纔是正確的。所以,你得到空

的是:

sb.append(firstNameField.getText()).append(" ").append(lastNameField.getText()); //(1)

但如果aryNames從來沒有投入任何數據aryNames[x][0]將是無效的,因此空被追加。

所以我檢查你在哪裏填充aryNames陣列。

+0

雅,那是把我的事,但我waaaas希望這不是太大的交易。我應該如何將「數據」添加到aryNames中,以便它在沒有任何空值或重複名稱的情況下正確輸出?由於我創造aryNames的唯一原因是沒有重複。 – Que 2013-04-29 18:19:40

+0

我想我不確定你的應用程序應該如何工作?你目前如何填充'aryStudent'數組?它看起來像是來自文本字段的名稱,所以除非您爲每個學生名稱都有一個firstName和lastName文本字段,否則我不確定是否有一種很好的方法從GUI中獲取。 – njkremer 2013-04-29 19:13:50

+0

我確實有一個名爲firstNameField和lastNameField的名字和學生姓名的文本字段。 – Que 2013-04-29 19:17:24