Java:変数と型の練習問題 [勉強]
職業訓練で使用している教科書「Java言語プログラミングレッスン(改訂第2版)・上」の3章「変数と型」にある練習問題を解いてみたいと思います。
問題3-1:
「光の速度を秒速30万kmとします。このとき、光が1日で進む距離をJava言語で計算して求めてください。」
問題3-2:
「2人の名前と年齢を入力すると、その人たちの年齢の平均を表示するプログラムを書いてください。
う~ん・・・
どれも簡単そうだけど・・・・・・うっかりミスに気を付けないとね。
私なりの回答は、続くの後にUPします。
問題3-1に対するソース
public class Hikari {
public static void main(String[] args) {
long n = 300000; //光の速度:30万km/秒とする
long hayasa = n * 60 * 60 * 24; //1秒×60→1分 1分×60→1時間 1時間×24→1日
System.out.println("光は1日で進む距離は " + hayasa + "kmです。");
}
}
おそらく、この問題のキモは、変数の型でしょうね。最初の光の秒速300,000kmをint型でやっちゃうとint型の範囲を超えてしまうため、答えが正しく表示されない。
だからlong型で宣言しておく。もちろん計算式も。
ここは・・・2行じゃなく1行でもいけるかな?
long hayasa = 300000L * 60 * 60 * 24;
・・・これで行けるかどうか試してはいませんが。(^-^;
で、次は問題3-2に対するソース。
import java.io.*;
public class AgeAve {
public static void main(String[] args) {
BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
try {
//1人目
System.out.print("一人目の名前を入力してください。 :");
String name1 = kbd.readLine();
System.out.print("その人の年齢を入力してください。 :");
int age1 = Integer.parseInt(kbd.readLine());
//2人目
System.out.print("二人目の名前を入力してください。 :");
String name2 = kbd.readLine();
System.out.print("その人の年齢を入力してください。 :");
int age2 = Integer.parseInt(kbd.readLine());
System.out.println();
System.out.println(name1 + "さんと" + name2 + "さんの年齢平均は" + (double)((age1 + age2)/2) + "歳です。");
} catch (IOException e) {
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("年齢が正しくありません。");
}
}
}
ちょっと長くなっちゃいましたかね。
この3章の時点では、まだfor文とか配列とか学んでいない状態ですので、こういう書き方になるのかなぁ~って思いながら書きました。
まぁ、平均を求める式と標準出力する部分を別々にした方が見やすいのかな?
double ageAve = (age1 + age2) / 2.0;
としておいて、
System.out.println(name1 + "さんと" + name2 +"さんの年齢の平均は" + ageAve + "歳です。");
この他にも問題3-3「ユーザが入力した文字列の各文字の文字コードを表示するプログラムを書いてください」っていうのもあるんですが・・・6章で学ぶfor文を使ったりするから今回は後回し。
後々、自分なりの回答をUPする予定です。
今後、職業訓練の夏休み期間中でも、各章の練習問題を解いてみたりして、復習しようかなぁって思ってます。場数をこなさないと、Javaが身につきませんからねぇ。まだ、うっすら頭の片隅にC言語がいたりして、Javaの邪魔をしたりするんで・・・・・・。
コメント 0