java - 输入流读取器-读取方法返回错误值

标签 java inputstream bufferedreader

这可能听起来很简单或者是一个古老的愚蠢问题,但对我来说却完全不同。 我已经编写了一个半下降金字塔模式的程序,如下所示。

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

我知道这很容易,诀窍是我不想通过使用 ScannerInteger.parseInt() 来做到这一点。我正在尝试使用 BufferedReaderInputStreamReader 执行此操作。 因此,当我在 num 中输入 5 执行我的主要方法的以下代码时。当我打印它时,它读作 53。我不知道为什么会这样。但是当我使用 'Integer.parseInt(br.readLine())' 方法时,它给出了准确的输出。当 read 方法应该读取 int 值时,它应该如何发生。请清除它。

    int num1;   
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter hte value of num1");
    //num1=Integer.parseInt(br.readLine());
    num1=br.read();
    System.out.println(num1);
    for(int i=0;i<num1;i++)
    {
        for(int j=0;j<=i;j++)
        {
            System.out.print(j+"\t");

        }
        System.out.println();
    }

这是我的第一个问题,所以请忽略愚蠢的错误,我已经尽力写好了。 谢谢..

最佳答案

It reads it as 53 when i prints it.

是的,会的。因为您调用的 read() 返回单个字符,或 -1 表示数据结束。

字符“5”的 Unicode 值是 53,所以这就是您所看到的。 (毕竟,您的变量是一个 int。)如果您将 num1 转换为 char,您将看到“5”。

当你想将一个整数的文本表示转换成一个整数值时,你通常会使用Integer.parseInt这样的代码.

关于java - 输入流读取器-读取方法返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546382/

相关文章:

java - 编译时错误 - 在 import java.io.BufferedReader 中找不到符号;

javascript 中 setInterval 的 Java 等价物

java - Informix JDBC ISO-8859-2 编码问题

Java - 遍历目录中的所有文件

java.lang.IllegalStateException : getOutputStream() has already been called for this response

android - 向 Web API 服务器发出 POSt 请求(android studio 中的 InputStream 错误)

java - 为什么刷新流没有效果,但是刷新写入器却有效果

java - 无法使用 Java 中的 HTTPS GET 请求读取任何响应

java - 如何将 S3ObjectInputStream 转换为 PushbackInputStream

java - 如何知道 BufferedReader Stream 是否关闭