如何将一个arraylist打印到JTextArea?

时间:2018-03-07 13:08:33

标签: java string swing for-loop arraylist

我似乎无法弄清楚如何将arrayList<String>打印到JTextArea并尝试同时使用append()setText()。我还尝试创建一个通过循环打印出ArrayList的方法,但是它不能添加到JTextArea,因为它不是String类型。

申请人应该获取学生档案(姓名,成绩,大学选择)并将其添加到ArrayList<String>申请人。如果它适用于以下if语句,则通过JButton完成:

if (studentsAverage > 74 && validInput && studentsAverage < 100) {

    studentChoices.addAll(uniOptions.getSelectedValuesList());
    person = new Student (namePromptTF.getText(), averagePromptTF.getText(),Applicants, studentChoices);
    arrayCount++;
    numberOfApplicants.setText(arrayCount +"/" +100+"students");                    

    person.printProfile(); //dont need
    person.studentProfileSort(); // dont need


    displayAllApplicants.append(person.returnProfile());

    Applicants.add(person);

将数组传递给包含以下内容的Student对象:

private ArrayList<Student> ApplicantArray;

然后通过此方法对ApplicantArray进行排序:

void studentProfileSort() {
    Student profileLine = null;

    int numberOfStudents = ApplicantArray.size();   
    ArrayList<Student> displayAllSorted = new ArrayList<Student>();

    for(int i = 1; i<numberOfStudents - 1; i++){
        for(int j = 0; j<(numberOfStudents - i); j++) {

            if(ApplicantArray.get(i).getFamilyName().compareTo(ApplicantArray.get(i).getFamilyName())>0){
                ApplicantArray.set(j, ApplicantArray.get(i));
            }
        }

        ApplicantArray.get(i).returnProfile();          
    }
}

有没有办法在循环中包含一个return语句,以便我可以将我的方法更改为String类型?

1 个答案:

答案 0 :(得分:1)

首先,您的排序算法似乎不起作用

ApplicantArray.get(i).getFamilyName().compareTo(ApplicantArray.get(i).getFamilyName())

您将该值与self进行比较,结果总是为0.即使这样可行,在下一行中,您可以通过设置值来覆盖数组,而不是交换这两个值或设置为新的ArrayList。

但如果一切正常,那就是打印这些学生的方式:

StringBuilder b = new StringBuilder();
for (Student student : applicantArray) {
    b.append(student + "\n"); // this if you implemented toString() in Student
    b.append(student.getFamilyName() + ' ' + student.getFirstName() + "\n"); // or something like this
}
textArea.setText(b.toString());

P.S。:你永远不应该使用UpperCamelCase作为变量或参数,而是使用lowerCamelCase(例如ApplicantArray - &gt; applicantArray)