public class Test2 {    public static void main(String[] args)throws Exception {
        BufferedInputStream bis = new BufferedInputStream(System.in);
        DataInputStream dis = new  DataInputStream(bis);
        System.out.print("input a:");//希望从键盘读取一位整数
        int a=dis.readInt();
        System.out.print("input b:");//从键盘中再读取一位整数
        int b=dis.readInt();
        dis.close();
        
        
        int sum = a + b;//把读取到的整数相加
        System.out.println("a ="+a+" b="+b+" sum="+sum);
        
    
    }
}
但我运行结果如下:
input a:12
input b:21
a =825363722 b=842075402 sum=1667439124
请问各位高手,如何实现这个功能,在这先谢谢各位了!

解决方案 »

  1.   

    “readInt”是把输入流中连续的4个byte看作一个整形而直接返回其值,并没有能够讲输入的Ascii数字字符串转换成整数的能力。
      

  2.   

    先按String读入,再用Integer.parseInt()
      

  3.   

    是啊,我也建议你先把整个字符串读进来,然后使用Integer.parse自己转换。
      

  4.   

    当然,你也可以把这种转换封装起来,从而也就开发出了一个满足你要求的InputStream类。
      

  5.   

    那DataInputStream和DataOutputStream类中的那些用于Java基本类型数据的读写方法用来干嘛呢,各位可否解释一下?不懂^_^
      

  6.   

    比如你读一个二进制文件,那个文件的最前面四个字节保存着一个整数,那么readInt就能一下子把它读出来,不需要你自己手工读出4个字节,然后使用位运算来拼起来。
    我是说看作二进制的一个整数,不是文本文件里的那种Ascii字符串。
    就好比一个整数有4个字节,但并不等价于4个字符。