java - 如何解决由具有混合数据类型的数据文件引起的 InputMismatchException

用户10307826

我的程序从包含整数和实数的文件中读取数据,并将这些数字分配到 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java - Try/Catch 没有越过 InputMismatchException

如何解决InputMismatchException?

从.txt文件扫描时出现java.util.InputMismatchException错误

即使下一个令牌看起来适合数据类型,Java扫描仪也会引发InputMismatchException

为什么这里有一个InputMismatchException?(Java)

如何解决扫描仪的错误?java.util.InputMismatchException

文件扫描程序InputMismatchException

Java Try and Catch inputMismatchException 错误

java.util.InputMismatchException错误

Java-错误消息InputMismatchException

从 Java 中的 Scanner 获取值后,如何获取 java.util.InputMismatchException 错误?

java - 在int,char和int中输入时如何避免Java中的InputMismatchException

使用Java读取具有混合数据的文件

如何为我的扫描仪文件阅读器修复java.util.InputMismatchException?

如何处理 java 异常 InputMismatchException 和自定义异常?

问题Java的扫描仪:InputMismatchException时

Java在InputMismatchException之后不要求重新输入

如何在不使用 try 和 catch 的情况下捕获 Java 中的错误“InputMismatchException”并打印个性化消息?

无法弄清楚如何捕获InputMismatchException

使用Scanner.nextFloat JAVA的java.util.InputMismatchException

编译时出现 Java 'java.util.InputMismatchException' 错误

异常线程“main” java.util.InputMismatchException错误

使用nextFloat()的线程“ main”中的异常java.util.InputMismatchException

为什么在此代码中引发java.util.InputMismatchException?

java.util.InputMismatchException:对于输入字符串:“ 2147483648”

java.util.InputMismatchException扫描仪问题?

在Java中面临InputMismatchException的一些问题

为什么我的程序抛出java.util.InputMismatchException?

我的程序中是否存在InputMismatchException处理?-JAVA