private static ArrayList<String[]> one = new ArrayList<String[]>();
...
...
btnAdd.setOnAction(e -> {
try{
String [] lineD = new String[6];
lineD[0] = txtID.getText();
lineD[1] = txtG.getText();
lineD[2] = txtBP.getText();
lineD[3] = txtD.getText();
lineD[4] = txtSP.getText();
lineD[5] = txtCons.getText();
one.add(lineD);//adds the array to ArrayList
int i = 0;
while(i<one.size()){
output.write((Arrays.deepToString(one.get(i))));
output.newLine();
i++;
}
txtID.clear();
txtG.clear();
txtBP.clear();
txtD.clear();
txtCons.clear();
txtSP.clear();
} catch (Exception t) {
System.out.println("An error has occured " + t.getMessage());
}
});
根据我的逻辑,该按钮应该从字段中添加文本,将它们扔到数组中,然后将它们放入String数组的ArrayList中。该循环应该将元素数组写入我的文件。
每一次,输出都被复制一次用于第一次添加,然后其余部分被正确写入。
输出:
[鲍勃,山姆,戈格,汤姆,史密斯,贝克]
[鲍勃,山姆,戈格,汤姆,史密斯,贝克]
[拉姆,三明治,男人,最后,厨房,食物]
最佳答案
基本上就是您正在做的事情:
当按下按钮时,将文本添加到one
,并将ArrayList one
的所有元素写入文件输出流(?)output
。
您看到逻辑错误了吗?
单击一次后,one
是大小为1的ArrayList,具有以下内容:
[bob, sam, goerge, tom, smith, baker]
再次单击时,将另一个元素添加到ArrayList中:
[bob, sam, goerge, tom, smith, baker]
[lahm, sandwhich, man, last, kitchen, food]
然后将这两个元素都写入文件:
while(i<one.size()) {
output.write((Arrays.deepToString(one.get(i))));
output.newLine();
i++;
}
您要做的只是将最新元素写入文件:
String[] lastElement = one.get(one.size()-1));
output.write((Arrays.deepToString(lastElement);