我的程序从一个包含整数和实数的文件中读取数据,并将数字分配给2个不同的数组。它会读取所有内容,直到我向数据文件添加应该用作菜单选项的字符为止。这是一个例子。
127856 55.55
569334 100.50
987104 2.33
222382 5000.00
321333 999.99
q
q指的是一个菜单选项,它几乎结束了程序。
char choice = sc.next().charAt(0);
switch (choice) {
case 'q':
case 'Q':
printAccts(acctNum, balance, numaccts);
notDone = false;
break;
数据文件末尾的q导致错误。编译器告诉我IntputMismatchException发生在两行。在这里,acctnum和balance是数组,而max只是一个常量整数。
int numaccts = readAccts(acctNum, balance, MAX);
在** **之间的行。
public static int readAccts(int[] acctNum, double[] balance, int maxAccts)
throws Exception {
Scanner sc2 = new Scanner(new File("bankdata.txt"));
int count = 0;
while (sc2.hasNext() && count < maxAccts) {
**acctNum[count] = sc2.nextInt();**
balance[count] = sc2.nextDouble();
count++;
}
我认为我以前从未遇到过此问题,也不知道可以使用什么技术来解决它。有什么想法吗?
EDIT 第一个代码块和第二个代码块使用不同的方法
答案 0 :(得分:0)
执行此操作的一种方法是实现hasNextInt()
和hasNextDouble()
方法:
while (sc2.hasNext() && count < maxAccts) {
if(!sc2.hasNextInt() || !sc2.hasNextDouble()) {
break;
}
acctNum[count] = sc2.nextInt();
balance[count] = sc2.nextDouble();
}