私は今日、コードの一部でファイルからデータを読み取り、それらをプロパティとしてオブジェクトに追加するのに苦労していました(この手間をかけずにファイル内のオブジェクトを追加/読み取る方法を知っていますが、この方法でやりたかったのです)以下のように:
ファイルは次のようになります。
111,john,23.1
222,jack,22.5
234,adam,12.8
私は以下を使用してこのファイルを読み込もうとしていました:
public ArrayList<Staff> LoadAllStaffs(){
ArrayList<Staff> staffs = new ArrayList<Staff>();
File file = new File(stafffile);
Staff tmpstaff = new Staff();
try {
BufferedReader inputfile = new BufferedReader(new FileReader(stafffile));
String tmp;
while((tmp = inputfile.readLine()) != null){
StringTokenizer st = new StringTokenizer(tmp , ",");
tmpstaff.setID(Integer.valueOf(st.nextToken()));
tmpstaff.setFirstName(st.nextToken());
tmpstaff.setSalary(Double.valueOf(st.nextToken()));
staffs.add(tmpstaff);
}
}
catch (IOException e) {
}
return staffs;
}
println
返されたから示されるこの出力を使用してArrayList
:
234,adam,12.8
234,adam,12.8
234,adam,12.8
whileループの内側を移動したStaff tmpstaff = new Staff();
ところ、それがどうあるべきかがわかります。
なぜこれが起こっているのですか?私は-ここでも-ループの内側または外側で変数(ここではそのオブジェクト)を定義しても違いがないことを読みました。