SSブログ

Java:変数と型の練習問題 [勉強]

職業訓練で使用している教科書「Java言語プログラミングレッスン(改訂第2版)・上」の3章「変数と型」にある練習問題を解いてみたいと思います。

改訂第2版 Java言語プログラミングレッスン (上)

改訂第2版 Java言語プログラミングレッスン (上)

  • 作者: 結城 浩
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2005/10/26
  • メディア: 大型本

 

問題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の邪魔をしたりするんで・・・・・・。

 

 

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。