Относительно вашего кода: у вас, вероятно, есть какое-то объявление, похожее на: 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
}