关键字: system.in.read()
我们先来看一段程序
package system.in;
import java.io.IOException;
public class SystemIn {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int a = 0;
a = System.in.read();
System.in.getClass();
System.out.println("a=" + a);
int sum = 0;
for (int i = 0; i <= a; i++)
sum += i;
System.out.println(sum);
}
}
当我们输入为
5
发现输出
a=53
1431
会觉得很奇怪,为什么我输入的是5,结果输出a却为53,其实如果你了解read()这个函数,就很容易明白,System.in.read()返回的是输入数值的 ASKII 码(一个 int 整数)。
那么怎么来解决这种问题呢,有两种方式可以解决
1.采用System.out.write();注意使用这种方法,只能将值输出的时候再转换回来,但是里面的运算逻辑值还是错误的,就是sum的值还是错误的。
2.采用BufferedReader,但是要注意的是BufferReader读入的是一个字符串,所以我们在程序里面还要将其转换为Integer,我们就会发现代码如下
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
System.out.println("a=" + a);
int sum = 0;
for (int i = 0; i <= a; i++)
sum += i;
System.out.println(sum);
使用这种方法需要注意你输入的值,必须是数字,不能是字符串
所以个人感觉,如果你之需要对自己输入的数字做处理,比如进行相加,相减等操作,还是使用第二种方法比较好。