Hiscoder

HisCoder

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

关键字: 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);

使用这种方法需要注意你输入的值,必须是数字,不能是字符串

 

所以个人感觉,如果你之需要对自己输入的数字做处理,比如进行相加,相减等操作,还是使用第二种方法比较好。

posted on 2009-04-19 10:31  HisCoder  阅读(22354)  评论(0编辑  收藏  举报