程序如下,本来希望从控制台输入一个数据,然后将这个数据再在控制台输出。为什么现在输入一个整数,会输出另一个很大的数import java.io.DataInputStream;
import java.io.IOException;
/*
 * 此程序的原始目的是从控制台输入一个数据,然后再将这个数据在控制台输出
 */public class Hsdlkgf {
//成员方法,返回读取的整数值
private static int mb_Input(DataInputStream in){
try{

int a=in.readInt();

return a;


}
catch(IOException e){
e.printStackTrace();
return 0;
}

}
public static void main(String[] args){

try{
                      System.out.println("请输入一个整数");
//输出成员方法mb_Input返回的整数
System.out.println( "输入的整数为:"+mb_Input(new DataInputStream(System.in)));}
catch(Exception e){
e.printStackTrace();
}
}}

解决方案 »

  1.   

    http://blog.csdn.net/huxiweng/article/details/4573524
      

  2.   

    DataInputStream构造方法是一个InputStream吧  
    干嘛不用BufferedReader  或者 Scanner  很好用的啊public class Test {
    // 成员方法,返回读取的整数值
    private static int mb_Input(BufferedReader rb) {
    int a = 0 ;
    try {
    a = Integer.parseInt(rb.readLine());
    } catch (IOException e) {
    e.printStackTrace();
    }
    return a;
    }
    public static void main(String[] args) {
    try {
    System.out.println("请输入一个整数");
    // 输出成员方法mb_Input返回的整数
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("输入的整数为:" + Test.mb_Input(br));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}
      

  3.   

    这里涉及到System.in.read()标准输入流 
    因为它返回的是数字对应的unicode的值 比如说 :你输入1234 相当于 49,50,51,52
    结果就是(49 << 24) + (50 << 16) + (51 << 8) + (52 << 0)) = 825373492你输入123456 结果也是一样的 因为只读取前四个字节
      

  4.   

    这里涉及到System.in.read()标准输入流,因为它返回的是数字对应的unicode的值。楼上正解