黄昏より暗きもの、血の流れより赤きもの

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

目的地までの距離(km)を走るのに必要な、乗り物のガソリン代を算出する(Java Applet編)

問題


問1:A君は今度の休日を使って、東京から軽井沢へ車で往復で移動するのに必要なガソリン代について調べていた。調べた結果、以下の3つの事が分かった。



[a]:車の燃費は5km/ℓである事がわかった。車の燃費とはガソリン1ℓあたり車が走る距離の事で、車はガソリン1ℓあたり5km走る。
[b]:東京→軽井沢までの距離は、片道約173kmである。
[c]:ガソリン1ℓあたりの代金(ガソリン代)は160(JPY/ℓ)である。


これらの点を踏まえ以下の問題に答えよ。



(1):東京→軽井沢を往復する距離(km)を答えよ。
(2):東京→軽井沢を往復するのに必要なガソリンの量(ℓ)を答えよ。
(3):東京→軽井沢を往復するのにかかるガソリン代(JPY)を答えよ。


問2:燃費p(km/ℓ)の車のガソリン代をg(JPY/ℓ)とする。このとき車でdkmの道を移動するのに必要なガソリン代を、p,g,dを用いて表せ。
問3:燃費p(km/ℓ)の車のガソリン代をg(JPY/ℓ)とする。このとき車でdkmの道を移動するのに必要なガソリン代を算出するプログラムを、以下の要件を満たして作成せよ。



要件1:燃費p,ガソリン代g,距離dはテキストフォームより入力できるようにする。
要件2:「計算」ボタンをクリックすると、計算結果が出てくるようにする。


[ヒント]:「マウスが押されたとき」などの状況で行われる処理の事をイベント処理という。今回の問題をJava Appletを用いて解く場合は「はじめてのJava入門」等を参照し、GUIの設定やイベント処理のやり方を確認して欲しい。尚、フォームに入力された値の型なども注意せよ。

問題1の解答



(1):往復なので、173(km) * 2 = 346(km)(答)
(2):東京→軽井沢を往復する距離を[a]のガソリンの量で割って、346(km)/5(km/ℓ) = 69.2(ℓ)(答)
(3):東京→軽井沢を往復するのに必要なガソリンの量を[c]のガソリン代でかけて、160(円) * 69.2(ℓ) = 11'072(円)(答)

とこのように出発地から目的地までを往復するのにかかるガソリン代を計算できる。ガソリン代は以下の手順で求めれば良い。

(1):以下の三点をインターネットで調べる。



(a):目的地を往復する距離(km)
(b):車の燃費(km/ℓ)
(c):ガソリン1ℓ当りの値段(JPY/ℓ)


(2):(a)÷(b)を計算し、目的地を往復するのに必要なガソリンの量(ℓ) −(d)を計算する
(3):(d)*(c)を計算し、目的地を往復するのに必要なガソリン代(ℓ)を計算する

さらに(2),(3)と2段階を経て計算をするのが面倒な場合は、以下の式を使うと良い。(○km走るのに必要なガソリン代)(JPY) = (目的地までの距離)(km) ÷ 車の燃費(km/ℓ) * ガソリン代(JPY/ℓ)と表せる。

問題2の解答


上の公式を文字に差し替えて、dg/p(JPY)(答)

問題3の解答と解説(Java Applet)


解説


解答は以下のようになる。GUIの作り方をまとめると、以下の3段階の流れとなる。



  1. 冒頭に必要なGUI部品を定義

  2. initメソッドにて、必要な部品や位置、イベント処理などを記述

  3. actionPerformedメソッドにて、ボタンが押された時の処理を実際に記述

まず要件1は各項目をTextFieldを使ってやれば良い。次にボタンbuが押されたら(e.getSourceの部分)、TextFieldから入力された内容をgetText関数で取得し、その内容をInteger.parseIntを使ってInteger型に変換すれば良い。肝心のガソリン代は、問2の(dg/p)をresultで格納し、表示するようにした。


解答


実行結果と検証(Java Applet)


こちらのサイトにて動作確認。今回はテキストに数字が無事入力できるか?「result」ボタンを押すと、無事計算が正しく行われるかを検証して行く。計算は問1の状況(距離346km,燃費5km/l,ガソリン代160cost/l)を各フォームに入力し、11072がきちんと表示されるかを検証していく。





max OS 10.6.8,Firefoxで動作確認したところ、無事テキストが入力された。又問1の距離346km,燃費5km/l,ガソリン代160cost/lと入力し、「result」ボタンを押した所無事11'072が表示されているので、問題なく動作している。