4

这听起来很简单,或者是一个古老的愚蠢问题,但对我来说却完全不同。我写了一个半下降金字塔模式的程序,就像这样。

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

我知道这很容易,诀窍是我不想通过使用Scannerand来做到这一点Integer.parseInt()。我正在尝试使用BufferedReaderand来做到这一点InputStreamReader。因此,当我使用 num 中的 5 输入执行我的 main 方法的以下代码时。当我打印它时,它读为 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();
    }

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

4

3 回答 3

7

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

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

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

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

于 2013-03-21T11:35:13.523 回答
1

Bufferreader 将读取您需要使用以下方法将其转换为 int 的 unicode 值:

Integer.parseInt(num1) 或 Character.getNumericValue(num1)

于 2013-03-21T11:39:43.943 回答
1

53 是 '5' 的 ASCII,转换 ASCII 以打印出正确的字符串。

于 2013-03-21T11:40:43.410 回答