gpt4 book ai didi

java - 需要帮助从文本文件中读取行并将其添加到 ArrayList

转载 作者:行者123 更新时间:2023-12-02 00:34:16 25 4
gpt4 key购买 nike

对于我的家庭作业,我应该创建一个 ATM/Teller 程序,将用户帐户存储在文本文件中。我需要帮助读取文本文件并将其某些部分存储在数组列表中。

import java.io.*;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.BufferedReader;

public class GetData
{
public static void main(String[] args)
{
BufferedReader in = new BufferedReader(new FileReader("filefullofmoney.txt"));

String strLine;
int numberOfLines = 0;
while ((strLine = in.readLine()) != null)
{
numberOfLines++;
}

Database[] accounts = new Database[numberOfLines];
String[] array1 = new String[3];

int i;
int j = 0;

while (j < numberOfLines)
{
for (i=0; i < 2; i++)
{
array1[i] = in.readLine();
}
accounts.add(new Database(array[0],array[1],array[2]));
}
}
}

class Database
{
public String accountName;
public int pin;
public double balance;
}

我遇到问题的部分是accounts.add(new Database(array[0],array[1],array[2]));

基本上我的文本文件将采用这种方式格式化:

Account1 name
Account1 pin
Account1 balance
Account2 name
Account2 pin
Account2 balance
etc...

我希望能够将每个帐户的 3 行文本添加到数组列表的一个元素中。

我不确定我的功能有多少实际上可以工作,因为我无法编译它。

非常感谢任何帮助。谢谢

最佳答案

您的代码存在一些问题:

  • 您没有为 Database 类(应命名为 Account)指定构造函数。
  • 您不会对这些行进行子字符串化,因此您可以使用所有“Database#”前缀。
    • 我可以问为什么你那里有前缀吗?它们看起来是多余的。
  • 您无需将string转换为实际数据类型(intdouble)。
  • 当您只需要循环一次内容时,您可以循环播放内容两次。
  • 您没有适当的异常处理;你永远不应该将所有内容都包装在一个 catch(Exception) 中。

您的代码的可能解决方案可能是这样的(我尚未测试它是否确实有效):

private static String getLineContent(String value) {
return value.substring(value.indexOf(' ') + 1);
}

public static void main(String[] args) {
BufferedReader in;
try {
in = new BufferedReader(new FileReader("filefullofmoney.txt"));
} catch (FileNotFoundException ex) {
// TODO: Handle the error with a nice error message.
return;
}

List<Account> accounts = new ArrayList<Account>();

while (true) {
try {
String accountName = in.readLine();

if (accountName == null) {
// We have no new accounts. So we exit.
break;
}

accountName = getLineContent(accountName);
int pin = Integer.parseInt(getLineContent(in.readLine()));
double balance = Double.parseDouble(getLineContent(in.readLine()));

accounts.add(new Account(accountName, pin, balance));
} catch (IOException ex) {
// TODO: Handle the error with a nice message saying that the file is malformed.
}
}
}

class Account {

public String accountName;
public int pin;
public double balance;

public Account(String accountName, int pin, double balance) {
this.accountName = accountName;
this.pin = pin;
this.balance = balance;
}
}

关于java - 需要帮助从文本文件中读取行并将其添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com