Java InputMismatchException 未知来源

标签 java java.util.scanner inputmismatchexception

我无法找到错误的根源。我所做的就是从文件中读取文本

public static void main(String[] args) throws Exception {
    int T;

    Scanner sc = new Scanner(new FileInputStream("problem3.txt"));

    T = sc.nextInt(); // first int in file, so T should be 2
}

并且错误消息显示 InputMismatchException:

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 round1.Problem3.main(Problem3.java:11)

problem3.txt的内容如下(3行,无空格):

2
36
127

我已经搜索了解决 InputMismatchException 的其他问题,但大多数都有“格式错误”的错误(尝试将整数读取为字符串,反之亦然)。但就我而言,它不应该有问题,因为文件内容都是整数。

我还认为错误可能与“换行符(\n)”有关。所以尝试过

T = sc.nextInt(); // error
sc.nextLine();

反之亦然

sc.nextLine();
T = sc.nextInt(); // error

两者仍然在同一行给出相同的错误。

看起来是一个简单的问题,但我就是找不到它。提前致谢。

<小时/>

问题已解决:我将编码更改为 Cp1252,它读取的是 2。谢谢大家

最佳答案

这是一个编码问题。尝试使用 UTF-8 或 ANSI,您的代码应该可以正常运行,没有任何问题。

关于Java InputMismatchException 未知来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323499/

相关文章:

java - 是否可以查看 Eclipse 正在执行的 shell 命令?

java - 按字读取文件,扫描仪

java - 如何在不跳到下一个标记的情况下读取特定标记时停止循环?

java - 代码不久前工作然后 "java.util.InputMismatchException"

java - 为什么这会引发错误/根本不运行?

java - 使用扫描仪捕获/尝试不处理输入不匹配异常?

java - 在另一个类中声明Lock对象并在另一个类中调用锁的方法

java - 向 Spring MVC 添加 session 同步

java - 多线程访问LinkedList时的线程安全

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?