【问题标题】:Input stream reader- read method return wrong value输入流读取器-读取方法返回错误值
【发布时间】:2013-03-10 21:29:16
【问题描述】:

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

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

我知道这很容易,诀窍是我不想通过使用ScannerInteger.parseInt() 来做到这一点。我正在尝试使用BufferedReaderInputStreamReader 来做到这一点。 因此,当我使用 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();
    }

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

【问题讨论】:

  • 没什么大不了的,但它可能有助于显示您的输出。

标签: java inputstream bufferedreader


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助...我现在知道了
【解决方案2】:

Bufferreader 将读取您需要将其转换为 int 的 unicode 值,方法是:

Integer.parseInt(num1) 要么 Character.getNumericValue(num1)

【讨论】:

  • 感谢您的帮助...我现在知道了
【解决方案3】:

当我打印它时它读为 53。

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

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

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

【讨论】:

  • omg jon skeet.. 我听说过很多关于你的事,也读过太多你美丽而惊人的答案。再次感谢您清晰而简短的回复。所以只想再次确认,现在只有一种方法可以使用 Integer.parseInt(readLine())?
  • @user2194800:嗯,这取决于你想要做什么。如果您真的只想读取单个字符,则可以使用read(),然后也许使用Character.digit。但这不会处理像“10”这样的值......
  • 很抱歉,我没有资格为答案投票。当我得到这样做的声誉时,我会乖乖地这样做。 :)
  • @user2194800:您可能无法投票,但您可以通过点击分数下方的复选框接受答案。 (这并不是说你一定应该接受我的回答,但你就是这样做的:)
  • 是的,我一定会这样做的。但是根据堆栈规则,我在接下来的 2 分钟内不能这样做。 :(
猜你喜欢
  • 2010-12-16
  • 1970-01-01
  • 2015-09-13
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多