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

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

ただいまの
回答率

90.76%

  • Java

    13166questions

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

Javaの車の走行のコード

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 297

jamongo

score 2

前提・実現したいこと

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

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

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

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

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

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

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

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

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

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

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

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

該当のソースコード

package project1;

import java.util.*;

public class TestCar
{
   public static void main(String[] args)
   {

    Scanner in = new Scanner (System.in);
    System.out.println("Please input how far a car goes in miles.");
     = in.nextDouble();


    Car c1 = new Car(0, 0);

    c1.addFuel();

      /*double totalFuel = 0;
      double odometer = 0;
      double distance = 0;
      double fuelAdded = 0;*/


        System.out.println("Please input how far a car goes in miles.");
        distance = in.nextDouble();

        .drive(distance)


        System.out.println("Please input how much fuel you get in gallon.");
        fuelAdded = in.nextDouble();

        totalFuel = totalFuel + fuelAdded;

        while ((totalFuel * 22.5) < distance)
        {
            System.out.println("Fuel is not enough. Please add more."); 
            fuelAdded = in.nextDouble();
            totalFuel = totalFuel + fuelAdded;
        }

        odometer = odometer + distance;
        System.out.println("Odometer shows " + odometer + "miles");

        totalFuel = totalFuel - (distance * (1/22.5));
        System.out.println("Remained fuel is " + totalFuel + "gallon");

   }
}      
  class Car
{
   private double distance;
   private double odometer;
   private double fuelAdded;
   private double totalFuel;


   public Car(double d, double fa)
   {
      distance = d;
      //odometer = 0;
      fuelAdded = fa;
      //totalFuel = 0;
   }

   public double getDistance()
   {
      return distance;
   }

   /*public double getOdometer()
   {
      return odometer;
   }*/
    public double getFuelAdded()
   {
      return fuelAdded;
   }

   /*public double getTotalFuel()
   {
      return totalFuel;
   }*/

   public void addFuel ()
   {
       totalFuel = totalFuel + fuelAdded;
   }

   public void drive(double distance)
   {
        odometer = odometer + distance;
        totalFuel = totalFuel - (distance / 22.5);
   }
}

試したこと

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

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

より詳細な情報

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • coco_bauer

    2017/09/21 10:10

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

    キャンセル

回答 2

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/21 12:49

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

    キャンセル

+1

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

  • Carインスタンスを生成するときに、なにが初期化されているべきか
    とりあえず総走行距離が0でないと困りますよね。新車ですから。
    ガソリンの初期値は要検討です。あと、燃費も与えられるといいですね。
  • 走行する距離を入力したときに、どんな返答が欲しいか
    最低限必要な燃料量を教えてほしいですよね。燃費から計算できるはず。
  • ガソリンを給油したい
    fuelAddedが決まっていると自由に給油できないですよね。
    給油量はメソッドの引数として与えるべきです。
  • 車をどう走らせるか
    走行距離を入力する、driveメソッドがあるといいですね。
    その際、内部で総走行距離と燃料残量を処理しなければなりません。
  • 走行距離などの情報を得たい
    運転席で計器を見るように、情報を知ることが出来たら直感的ですね。

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

// 車を用意 (引数は燃費, ガソリンの量の初期値)
Car myCar = new Car(22.5, 0);

// 走りたい距離の入力を受け付ける
System.out.print("How long will you drive? ");
double plannedDistance = in.nextDouble();
// 必要なガソリン量を教えてもらう
double neededFuel = myCar.computeNeededFuel(plannedDistance);
// 充分な量になるまで給油
while(neededFuel < myCar.getFuel()) {
    System.out.print("How much do you refill? ");
    myCar.refill(in.nextDouble());
}

// 給油完了!いざ発進
myCar.drive(plannedDistance);
// 今の情報を教えてね
myCar.printInfo();

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    明解Java入門編演習9−3

    この演習はDayクラスを使わずに行う演習なのでしょうか? Dayクラスを使うのなら、銀行口座クラスにtoStringメソッドを作る理由が分かりません。 また、もしDayクラスを

  • 解決済

    getMethod、invokeの第2引数について

    こんなクラスがあったとします。 class Test { private Double A; private Integer B; private

  • 解決済

    sqlserverのストアドプロシジャーから、javaでのresultset取得の方法

    前提・実現したいこと sqlserverのストアドプロシジャーから、javaでのresultset取得の方法 発生している問題・エラーメッセージ javaの独習中で、sq

  • 解決済

    初期化メソッドのスマートな書き方

    現在,プログラム内に次のような,int型配列とdouble型配列の全ての要素に0を入れる(初期化する)というメソッドを書いています. 見てわかる通り,非常に冗長な書き方です.簡潔

  • 解決済

    javaについて

    javaについて質問です。情報処理検定第53回のプログラミング部門1級のjavaの問題をやっているんですけど、そのjavaに平均値を追加したいです。どのように追加すれば良いのでしょ

  • 解決済

    Javaでそれぞれの英単語のTFIDFの求め方がわかりません。

    Javaを独学で勉強中のJava初心者です。Javaで英文テキストファイルを読み込みそれぞれの英単語のTFIDFを表示させるプログラムを作りたいのですが、どうしてもうまくできません

  • 解決済

    偶数だけ出したい

    public class Main { public static void main(String[] args) throws Exception { for (int

  • 解決済

    javaの配列に文字を格納して処理する方法

     疑問、質問 javaについての質問です。 キーボードから文字を一字ずつ入力し配列に格納する。 その後配列に格納されていた文字によってそれぞれ順番に処理していくというプログラ

同じタグがついた質問を見る

  • Java

    13166questions

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