我在从文本文件中读取并写回数组列表时遇到了一些麻烦。我想知道你是否可以告诉我哪里出错了?感谢。
accountArrayList = new ArrayList<BankAccount>();
private void fileIn()
{
try
{
createTestAccounts();
//Scanner input = new Scanner(new FileReader(bankFile));
JOptionPane.showMessageDialog(null, "File: " + bankFile + " has been opened for importing");
BufferedReader reader = new BufferedReader(new FileReader("bankFile.txt"));
String account = reader.readLine();
while(account !=null) {
accountArrayList.add(account); // - add a new account to the text file, but exception show that String cannot be converted to Bank Account
account = reader.readLine();
}
reader.close();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "not found");
}
}
答案 0 :(得分:4)
您要添加String
,但list.add
方法需要BankAccount
类型的对象。
您必须找到一种方法将该String转换为该类型的Object,然后添加后者。也许有一个fromString()工厂方法?或者是一个初始化的构造函数 - String?
如果有构造函数,那么它应该看起来像
accountArrayList.add(new BankAccount(account));
答案 1 :(得分:1)
要阅读您可能使用的所有行(如果您的文件是UTF-8):
List<String> allLines = Files.readAllLines("bankFile.txt", StandardCharsets.UTF_8);
但正如其他评论中提到的那样,您需要将String
转换为BankAccount
答案 2 :(得分:0)
BankAccount ba = new BankAccount(account);
accountArrayList.add(ba);
你需要这样的东西......取决于你的BankAccount类究竟是什么。
答案 3 :(得分:0)
arraylist需要一个BankAccount
对象,而不是从一个文件中读取,所以arraylist应该是String。
ArrayList<String> accountArrayList = new ArrayList<>();
对于while循环条件,个人而言,我总是使用,但你也可以这样做。
while((account = reader.readLine()) != null){
accountArrayList.add(account);
}
答案 4 :(得分:0)
假设你有String
的{{1}}构造函数,就像这样:
BankAccount
您可以使用Apache commons-io和java 8来获得一行内容!
public BankAccount(String account) {
this.account = account;
}