我从文件中导入了Strings
的列表,并将其放入arrayList
。我试图删除这些数组的结尾,因此我将它们放入单独的String
格式
这是我设置x
的地方x = new ArrayList<BankAccounts>();
try {
Scanner reader;
reader = new Scanner( new File("F:\\myCreditUnion.txt") );
while ( reader.hasNext() )
{
String inputLine = reader.nextLine();
first = inputLine.substring(0, 3);
second = Double.parseDouble(inputLine.substring(5, inputLine.length()));
x.add(new BankAccounts(first, second));
}
reader.close();
}
这就是我试图切断结束的地方
double howmuch;
for(int i = 0; i < x.size(); i++)
{
list.equals(x.get(i));
howmuch = Double.parseDouble(list.substring(5, list.length()));
}
// x is the list
我得到nullpointerexception
。想知道如何解决这个问题,因为我对编程很陌生。
我导入的文档包含#和字母的组合,例如,101s 583.58
答案 0 :(得分:0)
如果您在上面的代码中遇到NullPointerException,则list
或x
为空。检查您设置其值的位置,或在问题中包含该部分代码。
答案 1 :(得分:0)
要为list
分配值,您使用的是list = x.get(i);
而不是list.equals(x.get(i));
更新
equals()
不分配值,只检查两个对象是否相等。
x.get(i)返回的值将是BankAccount,因此您无法将其分配给列表(这是一个字符串)
您必须使用toString()将BankAccount转换为String,或者在将其分配给列表之前通过调用其中一个BankAccount方法来获取其中的String,其工作原理取决于BankAccount类提供的方法。
答案 2 :(得分:0)
关于你的代码:你可能在最后一段代码粘贴之前的某个地方有某种类似于String line = null;
的声明,你会在NullPointerException
行得到一个list.equals(x.get(i));
。这是因为您的list
对象未初始化。但是你不需要这样做。见下文。
为了做你想做的事,你应该使用以下代码:
BankAccounts的类定义:
class BankAccounts {
public String account;
public Double value;
public BankAccounts(String account, Double value)
{
this.account = account;
this.value = value;
}
}
并像这样重写你的代码:
List<BankAccounts> x = new ArrayList<BankAccounts>();
try {
Scanner reader;
reader = new Scanner( new File("F:\\myCreditUnion.txt") );
while ( reader.hasNext() )
{
String inputLine = reader.nextLine();
first = inputLine.substring(0, 3);
second = Double.parseDouble(inputLine.substring(5, inputLine.length()));
x.add(new BankAccounts(first, second));
}
reader.close();
}
在我看来,您的输入文件包含ABC 10.324
形式的行。您正在将此正确解析为BankAccounts
个对象(每个对象包含一个代表帐户名的String
和一个代表该数量的Double
当您从文件中读取它们时。所以没有必要再次重新解析。
迭代和查看金额的代码如下;
// x is the list
double howmuch = 0;
for(int i = 0; i < x.size(); i++)
{
BankAccounts accounts = x.get(i);
howmuch = accounts.amount; // there is no need to cast since unboxing will occur here.
// here howmuch will contain the amount for each account
}