Мне нужно заполнить два отдельных массива именами из текстового файла и соответствующих балансов аккаунта. Файл выглядит так:
10
Helene 1000
Jordan 755
Eve 2500
Ken 80
Andrew 999
David 1743
Amy 12
Sean 98
Patrick 7
Joy 14
где 10 - количество учетных записей
import java.util.*;
import java.io.*;
import java.util.Arrays;
public class bankaccountmain {
public static void main(String[] args) throws FileNotFoundException {
Scanner inFile = null;
try {
inFile = new Scanner(new File("account.txt"));
;
} catch (FileNotFoundException e) {
System.out.println("File not found!");
System.exit(0);
}
int count = 0;
int accounts = inFile.nextInt();
String[] names = new String[accounts];
int[] balance = new int[accounts];
while (inFile.hasNextInt()) {
inFile.next();
names[count] = inFile.next();
inFile.nextInt();
balance[count] = inFile.nextInt();
count++;
}
System.out.println(Arrays.toString(names));
System.out.println(Arrays.toString(balance));
}
}
Ваша петля плохо определена.
Вы проверяете, есть ли следующий int вместо следующего токена и потребляющие строки, которые вы не собираетесь использовать.
Попробуйте это вместо цикла:
while (inFile.hasNext()) {
names[count] = inFile.next();
balance[count] = inFile.nextInt();
count++;
}
Эта
int accounts = inFile.nextInt();
потребляет этот токен
10
Затем вы делаете
while (inFile.hasNextInt()) {
но следующие токены в файле:
\nHelene 1000
поэтому вызов метода будет возвращать false
так как нет следующего int
и цикл будет завершен.
Возможно, вам стоит проверить все линии.
Измените петлю следующим образом. Измените предложение while() и закомментируйте две строки.
while (inFile.hasNext()) {
//inFile.next();
names[count] = inFile.next();
//inFile.nextInt();
balance[count] = inFile.nextInt();
count++;
}
hasNextInt
?