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

AJ0*_*027 3 java inputstream bufferedreader

这可能听起来很容易或者是一个古老的愚蠢问题,但对我来说却完全不同.我已经为半降金字塔模式编写了一个程序,就像这样.

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

我知道这很容易,诀窍是我不想通过使用Scanner和做到这一点Integer.parseInt().我想用BufferedReader和做这个InputStreamReader.所以当我执行以下代码的main方法时输入为5的num.当我打印它时,它读为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();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的第一个问题所以请忽略愚蠢的错误,我尽力写出来.谢谢..

Jon*_*eet 7

当我打印它时,它读为53.

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

字符'5'的Unicode值为53,这就是你所看到的.(int毕竟你的变量是一个.)如果你num1转向a char,你会看到'5'.

当您想将整数的文本表示转换为整数值时,通常会使用诸如的代码Integer.parseInt.