gpt4 book ai didi

Java异常错误(线程 "main"java.util.InputMismatchException中的异常)

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:34 33 4
gpt4 key购买 nike

这个Java类从日志文件中读取数据并将值插入数组列表中,数据可以从int更改为任何其他类型,,,当我在某些情况下运行该类时,我收到此异常错误...

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at GetStaisticResults.readfile(GetStaisticResults.java:33)
at GetStaisticResults.main(GetStaisticResults.java:15)

我尝试在以不同方式插入数组列表之前转换值,但没有结果,有什么帮助吗?

import java.io.*;
import java.util.*;
import org.apache.log4j.Logger;

public class GetStaisticResults {
public static void main(String[] args) throws Throwable {
String inputFile = ("C:\\staticalData.log");
ArrayList<Integer> Data = new ArrayList<Integer>();
Data = readfile(inputFile);//line 15
}

public static ArrayList<Integer> readfile(String file) throws IOException {
Scanner s = new Scanner(new File(file));
ArrayList<Integer> list = new ArrayList<Integer>();
while (s.hasNext()) {
list.add(s.nextInt()); //line 33
}
s.close();
return list;
}
}

最佳答案

此代码的问题似乎是您的输入不是基于Integers.hasNext() 检查可转换为 String 的输入。您可能应该在这里使用 s.hasNextInt() 。或者您可以将 s.nextInt() 更改为 s.next() ,它将以 String 形式接受输入。我提供两种可能的解决方案,然后您可以决定哪一种满足您的要求。

解决方案 1:

ArrayList<Integer> list = new ArrayList<>();
while (s.hasNextInt()) {
list.add(s.nextInt());
}

在此解决方案中,您的代码将仅采用Integer 作为输入。因为 s.hasNextInt() 将输入限制为 Integer 值。如果遇到 Integer 值以外的任何值,则 while 循环将退出。

解决方案 2:

ArrayList<String> list = new ArrayList<>();
while (s.hasNext()) {
list.add(s.next());
}

在此解决方案中,您的代码将采用 String 作为输入。无论您的输入包含 "abc"7 还是 33.32 等,它都不会失败。它会将它们全部保存为 String 值。

关于Java异常错误(线程 "main"java.util.InputMismatchException中的异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58373681/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com