質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

1706閲覧

Javaの車の走行のコード

jamongo

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/09/20 21:01

###前提・実現したいこと

CarとTestCarというクラスを使い、車が一直線に道を進んで行くというコードを書かなければなりません。

1 その際に、ユーザーに「これから走行する距離」を聞いてそれを入力してもらいます。

2 次に「車に入れるガソリンの量」を聞き、それを入力してもらいます。

3 車の燃費を22.5m/1gallonとして、「これから走行する距離」に対して、「ガソリンの量」が十分かどうかをチェックし、足りなければ足りるようになるまでユーザーに追加のガソリンを追加してもらいます。

4 車が走った後は、「総走行距離」と「残りのガソリンの量」をユーザーに伝えます。

5 上の流れを何回も繰り返します。

コンストラクターは0パラメーターと1パラメーターのものがあるべきだと書いてあります。

下に書いたコードは色々と試しているうちに混乱してしまったものです。

お手数ではございますが、具体的にどのようなコードになるのかを教えていただけると幸いです。

よろしくお願いいたします。

###発生している問題・エラーメッセージ

TestCarのクラスとCarのクラスをどう繋げたら良いのか理解できておりません。 またどこをどう直せば良いのか混乱しております。

###該当のソースコード

JAVA

1package project1; 2 3import java.util.*; 4 5public class TestCar 6{ 7 public static void main(String[] args) 8 { 9 10 Scanner in = new Scanner (System.in); 11 System.out.println("Please input how far a car goes in miles."); 12 = in.nextDouble(); 13 14 15 Car c1 = new Car(0, 0); 16 17 c1.addFuel(); 18 19 /*double totalFuel = 0; 20 double odometer = 0; 21 double distance = 0; 22 double fuelAdded = 0;*/ 23 24 25 System.out.println("Please input how far a car goes in miles."); 26 distance = in.nextDouble(); 27 28 .drive(distance) 29 30 31 System.out.println("Please input how much fuel you get in gallon."); 32 fuelAdded = in.nextDouble(); 33 34 totalFuel = totalFuel + fuelAdded; 35 36 while ((totalFuel * 22.5) < distance) 37 { 38 System.out.println("Fuel is not enough. Please add more."); 39 fuelAdded = in.nextDouble(); 40 totalFuel = totalFuel + fuelAdded; 41 } 42 43 odometer = odometer + distance; 44 System.out.println("Odometer shows " + odometer + "miles"); 45 46 totalFuel = totalFuel - (distance * (1/22.5)); 47 System.out.println("Remained fuel is " + totalFuel + "gallon"); 48 49 } 50} 51 class Car 52{ 53 private double distance; 54 private double odometer; 55 private double fuelAdded; 56 private double totalFuel; 57 58 59 public Car(double d, double fa) 60 { 61 distance = d; 62 //odometer = 0; 63 fuelAdded = fa; 64 //totalFuel = 0; 65 } 66 67 public double getDistance() 68 { 69 return distance; 70 } 71 72 /*public double getOdometer() 73 { 74 return odometer; 75 }*/ 76 public double getFuelAdded() 77 { 78 return fuelAdded; 79 } 80 81 /*public double getTotalFuel() 82 { 83 return totalFuel; 84 }*/ 85 86 public void addFuel () 87 { 88 totalFuel = totalFuel + fuelAdded; 89 } 90 91 public void drive(double distance) 92 { 93 odometer = odometer + distance; 94 totalFuel = totalFuel - (distance / 22.5); 95 } 96} 97 98

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/09/21 01:10

問題(課題?)をよく読んで内容を理解して下さい。「コンストラクターは0パラメーターと1パラメーターのものがあるべきだと書いてあります。」のような課題の断片を書かれても理解不能です。
guest

回答2

0

勘違いだったら申し訳ないのですが、teratail では、基本的には、やって欲しいことの丸投げは禁止されています。
何かの教材、あるいは宿題のような内容なので、苦労されているのは理解出来るのですが、どこまで理解出来ているのかが不明な状況で、何を具体的に混乱しており、その混乱の元をどのように解決すれば良いかという話をするのは難しいです。
答えを書くのは簡単ですが、それを書き写すだけであればやらないほうがよいと思います。
厳しい回答に見えるかもしれませんが、一度投稿内容を見直すことをおすすめします。

投稿2017/09/21 00:25

YasuhiroMiyake

総合スコア1336

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/09/21 03:49

丸投げと言うほどではないような... 高評価が一定数付いているようですので、同意される方も多いのでしょうが。 個人的には、追記依頼で充分足りる内容に思えてしまいます。
guest

0

一旦Carのクラス構成を忘れて、どのように使いたいか考えた方がいいです。

  • Carインスタンスを生成するときに、なにが初期化されているべきか

とりあえず総走行距離が0でないと困りますよね。新車ですから。
ガソリンの初期値は要検討です。あと、燃費も与えられるといいですね。

  • 走行する距離を入力したときに、どんな返答が欲しいか

最低限必要な燃料量を教えてほしいですよね。燃費から計算できるはず。

  • ガソリンを給油したい

fuelAddedが決まっていると自由に給油できないですよね。
給油量はメソッドの引数として与えるべきです。

  • 車をどう走らせるか

走行距離を入力する、driveメソッドがあるといいですね。
その際、内部で総走行距離と燃料残量を処理しなければなりません。

  • 走行距離などの情報を得たい

運転席で計器を見るように、情報を知ることが出来たら直感的ですね。


上記の仕様を満たすように、Carを設計すればいいんです。
ここでは、呼び出し側の例だけ示します。
実際には、インスタンス生成より後の部分をループさせる必要があります。

Java

1// 車を用意 (引数は燃費, ガソリンの量の初期値) 2Car myCar = new Car(22.5, 0); 3 4// 走りたい距離の入力を受け付ける 5System.out.print("How long will you drive? "); 6double plannedDistance = in.nextDouble(); 7// 必要なガソリン量を教えてもらう 8double neededFuel = myCar.computeNeededFuel(plannedDistance); 9// 充分な量になるまで給油 10while(neededFuel < myCar.getFuel()) { 11 System.out.print("How much do you refill? "); 12 myCar.refill(in.nextDouble()); 13} 14 15// 給油完了!いざ発進 16myCar.drive(plannedDistance); 17// 今の情報を教えてね 18myCar.printInfo();

あとは、上記のプログラムで問題なく動作するよう、Carを実装するだけです。
『どのように使いたいか』を先に考えた方が、オブジェクト指向しやすいですよ。

投稿2017/09/21 03:46

編集2017/09/21 07:14
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問