- ベストアンサー
今勉強中の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の違いがわからなくて困っています。何が混乱の原因ですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下の場合では、単なる文字列として扱うので、 数値としてあつかっていませんからいけないのだと思います。 str1は文字列で numは整数です。 numは、決められた範囲の整数しか扱えません。 混乱の原因は、勉強不足です。
その他の回答 (2)
- potch
- ベストアンサー率34% (24/70)
たとえば、"あなたは??才です。"とインプットすると、"あなたはあなたは??才です歳です。"と表示されるわけですから、これだと少々問題だと思います(上のスクリプトで言えば)。それに、上のインプットでintにparseIntしたときはexceptionを返します。 str1とnumは変数の型が違います。上でも言ったとおり上のインプットをするとnumのあるスクリプトではexception(エラーでいいかな?)を返すはずです。基本的にnumはint型ですから、文字列(String)を扱えないのです。 蛇足 下のスクリプトでは、一旦入力を変数に代入しているようですが、ただ、入力を表示させたいのであれば、変数に代入せずに System.out.println(br.readLine()); で十分ですし、メモリの消費も多少ですが抑えられます。
お礼
ありがとうございます。参考になりました。
- rinkun
- ベストアンサー率44% (706/1571)
単に結果を表示するだけなら文字列のままでも良いでしょう。 ただ学習用のコードですから、数値として読み込むことを目的としているのではないですか。
お礼
ありがとうございます。参考になりました。
お礼
ありがとうございます。参考になりました。