猿问

Java 异常错误(线程“main”中的异常 java.util.InputMismatch)

这个 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;

    }

}


一只名叫tom的猫
浏览 98回答 2
2回答

拉风的咖菲猫

这段代码的问题似乎是你的输入没有Integer根据。s.hasNext()检查可以转换为 的输入String。您可能应该s.hasNextInt()在这里使用。或者您可以将其更改s.nextInt()为s.next()将输入作为String. 我提供两种可能的解决方案,然后您可以决定哪一种满足您的要求。解决方案一:ArrayList<Integer> list = new ArrayList<>();while (s.hasNextInt()) {&nbsp; &nbsp; list.add(s.nextInt());}在此解决方案中,您的代码将仅作为Integer输入。因为s.hasNextInt()限制了输入Integer值。如果遇到除该Integer值之外的任何内容,则while循环将退出。解决方案2:ArrayList<String> list = new ArrayList<>();while (s.hasNext()) {&nbsp; &nbsp; list.add(s.next());}在此解决方案中,您的代码将作为String输入。"abc"无论您的输入包含或7或等,它都不会失败。33.32它将把它们全部保存为一个String值。

慕姐4208626

所以问题是,每当您从文件中读取任何内容时,它都是string循环内的下一个格式,您正在获取整数值,而输入是字符串,这就是它给出的原因&nbsp;InputMismatchException
随时随地看视频慕课网APP

相关分类

Java
我要回答