这个 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; }}
2 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
这段代码的问题似乎是你的输入没有Integer根据。s.hasNext()检查可以转换为 的输入String。您可能应该s.hasNextInt()在这里使用。或者您可以将其更改s.nextInt()为s.next()将输入作为String. 我提供两种可能的解决方案,然后您可以决定哪一种满足您的要求。
解决方案一:
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值。
慕姐4208626
TA贡献1852条经验 获得超7个赞
所以问题是,每当您从文件中读取任何内容时,它都是string
循环内的下一个格式,您正在获取整数值,而输入是字符串,这就是它给出的原因 InputMismatchException
添加回答
举报
0/150
提交
取消