使用DataInputStream输入整数值

时间:2012-07-22 07:07:30

标签: java datainputstream

在使用DataInputStream输入任何值时,我必须按两次回车键,如果我输入任何单个数字...并在下面的代码片段中

public void print()
   {
       DataInputStream in = new DataInputStream(System.in);
       try
       {
           System.out.println("Enter a digit");
           int n=in.readInt();
           System.out.println(n);
        }
        .
        .
        .
        .

在打印n的值时,它通常显示一些意外的值...使用BufferedReader不会导致同样的问题......

当输入的值是233时,它显示842216202作为输出......代码中可能出现的错误是什么...需要帮助......

2 个答案:

答案 0 :(得分:4)

DataInputStream读取二进制数据。当您输入[2, 3, 3, \n]时,它等于[0x32, 0x33, 0x33, 0x0A](大端),0x3233330A,即842216202(十进制格式)。

更改为Scanner,它会读取文本并使用说服方法将字符转换为(例如)整数,您的示例使用Scanner

Scanner in = new Scanner(System.in);
try {
    System.out.println("Enter a digit");
    int n = in.nextInt();
    System.out.println(n);
} ...

答案 1 :(得分:0)

根据the Javadocs for DataInputStreamreadInt()方法将从底层输入流中精确读取四个字节。如果输入的数字长度少于四个字节(例如一位数字),则读取将继续,直到读取四个字节为止。这意味着它将包含您按“enter”键时输入的换行符,其Unicode编码值将被解释为整数。这可能是您错误的来源。