输入不符合预期,java FileReader

Input does not behave like expected, java FileReader

我有以下代码,执行时应该从指定文件获取输入整数,并输出乘法 table 最多 10 与给定的数字。

现在我不知道为什么,但是当读取数字时,它会把它转换成完全不同的东西。

输入为 3,文件将 num 识别为 51。

任何好的猜测是怎么回事,但我没有看到?

public class exercise2 {
    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("e://ex2.txt");
            int num = reader.read();
            for (int i=0; i<11; i++){
                System.out.println(num + " * " + i+ "= "+ num*i);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Reader.read 读取单个字符。

字符 3 的 Unicode 代码点为 51(十进制)。

查看文档:

https://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#read()

Reads a single character.

因此,此方法只是 returns 文件的第一个字符(转换为 int)。

你想要的是使用 Scanner 因为你想 解析 文件:

Scanner s = new Scanner(new File("e://ex2.txt"));

int input = s.nextInt();