我如何在循环中循环一个值?

时间:2013-04-24 20:41:14

标签: java arrays loops

所以我很抱歉,如果这似乎是我要求你做我的作业......我保证我不是,我只需要一些帮助,因为我之前从未使用过多维数组。我会问一个朋友或我的老师......但它是一个在线课程,因此得到回应...需要更长的时间,然后从这里等待一个。到目前为止......我是唯一一个参加这个课程的人,所以朋友们对这些东西一无所知等等。所以...好吧这个程序正在制作......但我只是担心关于到目前为止的第一步,它列出了每个学生和他们名字旁边的4个标记。

实施例

John Smith 67 87 56 97

Jane Doe 87 56 76 92
等等等。

这就是目标。很简单....或者我想。以下是我的一些变数......

public class StudentGradesView extends FrameView {

    int [][] aryStudent = new int [15][4]; //This is for the 15 students that can be inputted and 4 marks each.
    int numOfStudents = 0; //number of students start of at zero until inputted...
    int marks = 0; // not in use at this given moment

public StudentGradesView(SingleFrameApplication app) {

//unimportant....

}

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

        numOfStudents ++;
        String currentList = studentListField.getText();

        //This picks up the four different marks from four different Fields...

        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());

        //now the problem is when I press the add button which adds student names and mark) it only inputs 
        //the name and the last mark inputted in the test4field. What am I missing that loops all the grades from test1Field - test4Field?

    for (int x=0; x < numOfStudents ; x++) {
        for (int y=0; y < 4; y++) {

        studentListField.setText("" + firstNameField.getText() + " " + lastNameField.getText() + " " + aryStudent[numOfStudents][y] + "\n" + currentList);

        }
        System.out.println("");
    } 
}                  

2 个答案:

答案 0 :(得分:0)

连接一个字符串,并在构建完成后在studentListField中显示它。现在,你只是用当前的一个替换最后显示的等级,所以从用户的角度来看,你只能看到最后一个等级,是吗?

for(int x = 0; x < numOfStudents; x++)
{
    String str = firstNameField.getText() + " " + lastNameField.getText();
    for(int y = 0; y < 4; x++)
    {
        str = str + " " + aryStudent[x][y];
    }
     studentListField.setText(str);
}

要么这个解决方案是正确的,要么你必须更好地解释(准确描述你的期望和实际发生的事情),我将不得不喝更多咖啡。

答案 1 :(得分:0)

EDITED: 如果您想在文本字段中打印所有学生和成绩,那么 你可能还需要一些地方来记住学生的名字(以及成绩),对吧? 声明为:

String[] studentNames=new String[15]; 

然后,按下按钮后,还要将名称添加到数组中:

studentNames[numOfStudents] = firstNameField.getText() + " " + lastNameField.getText();

最后,使用StringBuilder构建字符串,然后将其设置为文本字段:

 numOfStudents++; // only increase the count right before the loop, after you've added the new student to the arrays. 

StringBuilder sb = new StringBuilder();

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