• ベストアンサー

今勉強中のjavaで。わからないことがあります。

import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

下の場合では、単なる文字列として扱うので、 数値としてあつかっていませんからいけないのだと思います。 str1は文字列で numは整数です。 numは、決められた範囲の整数しか扱えません。 混乱の原因は、勉強不足です。

ryuryu789
質問者

お礼

ありがとうございます。参考になりました。

その他の回答 (2)

  • potch
  • ベストアンサー率34% (24/70)
回答No.2

たとえば、"あなたは??才です。"とインプットすると、"あなたはあなたは??才です歳です。"と表示されるわけですから、これだと少々問題だと思います(上のスクリプトで言えば)。それに、上のインプットでintにparseIntしたときはexceptionを返します。 str1とnumは変数の型が違います。上でも言ったとおり上のインプットをするとnumのあるスクリプトではexception(エラーでいいかな?)を返すはずです。基本的にnumはint型ですから、文字列(String)を扱えないのです。 蛇足 下のスクリプトでは、一旦入力を変数に代入しているようですが、ただ、入力を表示させたいのであれば、変数に代入せずに System.out.println(br.readLine()); で十分ですし、メモリの消費も多少ですが抑えられます。

ryuryu789
質問者

お礼

ありがとうございます。参考になりました。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

単に結果を表示するだけなら文字列のままでも良いでしょう。 ただ学習用のコードですから、数値として読み込むことを目的としているのではないですか。

ryuryu789
質問者

お礼

ありがとうございます。参考になりました。

関連するQ&A