使用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作为输出。。。代码中可能的错误是什么…需要帮助。。。

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

更改为Scanner,它读取文本并具有将字符转换为(例如)整数的confinance方法,例如使用Scanner:

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

根据DataInputStream的Javadocs,readInt()方法将从底层输入流中读取正好四个字节。如果您输入的数字长度小于四个字节(例如一个位数字),则读取将继续,直到读取四个字节。这意味着它将包括您在按下"enter"键时输入的换行符,其Unicode编码值将被解释为整数。这可能是您的错误来源。

相关内容

  • 没有找到相关文章

最新更新