みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

今勉強中の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の違いがわからなくて困っています。何が混乱の原因ですか?

投稿日時 - 2005-12-10 09:13:56

QNo.1830111

困ってます

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

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

投稿日時 - 2005-12-10 13:20:55

お礼

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

投稿日時 - 2005-12-11 07:24:39

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

たとえば、"あなたは??才です。"とインプットすると、"あなたはあなたは??才です歳です。"と表示されるわけですから、これだと少々問題だと思います(上のスクリプトで言えば)。それに、上のインプットでintにparseIntしたときはexceptionを返します。

str1とnumは変数の型が違います。上でも言ったとおり上のインプットをするとnumのあるスクリプトではexception(エラーでいいかな?)を返すはずです。基本的にnumはint型ですから、文字列(String)を扱えないのです。

蛇足
下のスクリプトでは、一旦入力を変数に代入しているようですが、ただ、入力を表示させたいのであれば、変数に代入せずに System.out.println(br.readLine()); で十分ですし、メモリの消費も多少ですが抑えられます。

投稿日時 - 2005-12-10 10:11:33

お礼

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

投稿日時 - 2005-12-11 07:24:57

ANo.1

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

投稿日時 - 2005-12-10 09:21:59

お礼

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

投稿日時 - 2005-12-11 07:25:16