ハードドライブ上の2つのファイルから入力を取得しています。
studentNames.txtとstudentScores.txt-名前には学生IDと名前があり、スコアには学生IDとスコアがあります。データを2つのArrayListに入れ、成績が一致するIDになるようにデータを並べ替えたいと思います。
例えば:
+------+--------------+---------+
| ID | Name | Grade |
+------+--------------+---------+
| 3305 | Smith Henry | 92.0 |
| 5555 | Eddy Olivia | 95.5 |
| 8915 | Johnson Luke | 98.5 |
+------+--------------+---------+
そして、データにはID /グレードだけが入力され続けます-ifステートメントを使用する必要があることはわかっていますが、それをどのように行うのでしょうか?
これが私のコードです:
import java.util.*;
import java.io.*;
public class P_Supplemental_9 {
public static void main(String[] args) throws FileNotFoundException {
File file1 = new File("c:/temp/studentNames.txt");
File file2 = new File("c:/temp/studentScores.txt");
if(file1.exists()) {
Scanner input = new Scanner(file1);
ArrayList<Student> students = new ArrayList();
while(input.hasNext()) {
students.add(new Student(input.nextInt(),input.nextLine()));
}
input.close();
for(int o = 0;o < students.size();o++) {
System.out.printf("%10d %20s avg\n", students.get(o).getStuId(), students.get(o).getStuName());
} // end for
}
if(file2.exists()) {
Scanner input = new Scanner(file2);
ArrayList<Student> grades = new ArrayList();
while(input.hasNext()) {
grades.add(new Student(input.nextInt(), input.nextLine()));
} /// end while
input.close();
for(int o = 0;o < grades.size();o++) {
System.out.printf("%10d %20s avg\n", grades.get(o).getStuId(), grades.get(o).getStuName());
} // end for
} // end if(file2.exists)
} // end main method
} // end P_Supplemental_9
class Student {
private int stuId;
private String stuName;
private ArrayList <Double> grades;
Student(int idIn, String nameIn) {
this.stuId = idIn;
this.stuName = nameIn;
} // end student class
Student(int idIn, ArrayList gradesIn) {
this.stuId = idIn;
this.grades = gradesIn;
}
public int getStuId() {
return stuId;
}
/**
* @param stuId the stuId to set
*/
public void setStuId(int stuId) {
this.stuId = stuId;
}
/**
* @return the stuName
*/
public String getStuName() {
return stuName;
}
/**
* @param stuName the stuName to set
*/
public void setStuName(String stuName) {
this.stuName = stuName;
}
/**
* @return the grades
*/
public ArrayList getGrades() {
return grades;
}
/**
* @param grades the grades to set
*/
public void setGrades(ArrayList grades) {
this.grades = grades;
}
} // end student class
Studentnames.txtのデータは次のとおりです
3305 Smith Henry
5555 Eddy Olivia
8915 Johnson Luke
これがStudentscores.txtからのデータです
3305 92.0
5555 95.5
8915 98.5
3305 89.0
5555 90.5
8915 95.5
3305 78.5
5555 85.0
8915 82.0