4

これは非常に簡単な、または古くからの愚かな質問に聞こえるかもしれませんが、私にとってはまったく異なります。このような半下降ピラミッド パターンのプログラムを作成しました。

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

Scanner私はこれが非常に簡単であることを知っています。秘訣は、 andを使用してこれを行いたくないということですInteger.parseInt()。と でこれをやろうとしていBufferedReaderますInputStreamReader。したがって、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();
    }

それは私の最初の質問なので、ばかげた間違いを無視してください。できる限り最善を尽くして書きました。ありがとう..

4

3 に答える 3

7

印刷すると53と表示されます。

はい、そうです。read()単一の文字を返す、またはデータの終わりを示す-1を返す呼び出しを行っているためです。

文字「5」のUnicode値は53なので、これが表示されています。int(結局のところ、変数は、です。)にキャストnum1すると、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 に答える