我的程序从包含整数和实数的文件中读取数据,并将这些数字分配到 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++;
}
我想我以前从未遇到过这个问题,我不知道我可以使用什么技术来解决它。有任何想法吗?
编辑第一个代码块和第二个代码块的方法不同
一种方法是实现hasNextInt()
和hasNextDouble()
方法:
while (sc2.hasNext() && count < maxAccts) {
if(!sc2.hasNextInt() || !sc2.hasNextDouble()) {
break;
}
acctNum[count] = sc2.nextInt();
balance[count] = sc2.nextDouble();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句