输入不符合预期,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();
我有以下代码,执行时应该从指定文件获取输入整数,并输出乘法 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();