我需要用文本文件中的名称和相应的帐户余额填充两个单独的数组。文件看起来像这个
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而不是下一个token,并消耗您不打算使用的行。
尝试将其作为一个循环:
while (inFile.hasNext()) {
names[count] = inFile.next();
balance[count] = inFile.nextInt();
count++;
}
按如下方式更改循环。更改while()子句并注释掉这两行。
while (inFile.hasNext()) {
//inFile.next();
names[count] = inFile.next();
//inFile.nextInt();
balance[count] = inFile.nextInt();
count++;
}
此
int accounts = inFile.nextInt();
消耗此令牌
10
然后你做
while (inFile.hasNextInt()) {
但是文件中的下一个令牌是
nHelene 1000
因此方法调用将返回CCD_ 1,因为没有下一个CCD_。
也许你应该检查一下完整的线路。