1. ホーム
  2. java

[解決済み] 走行距離ループヘルプJava

2022-02-12 11:11:07

質問内容

なぜプログラムが正しくループしないのか、ずっと頭を悩ませています。時間単位で取得するのではなく、最終的な時間/速度しか取得できないのです。つまり、時速40マイルで3時間走ったとすると、120しか得られないのです。

ここで問題です。

自動車の走行距離は次のように計算できる。 距離 = 速度 * 時間 例えば、列車が時速40マイルで3時間走行した場合、走行距離は120マイルとなる。自動車の速度(mph)と走行した時間数を求めるプログラムを作成しなさい。また、ループを使用して、ユーザが指定した時間帯の各時間の走行距離を表示すること。例えば、時速40マイルで3時間走行している場合、以下のようなレポートを表示する必要がある。 1時間あたりの走行距離

1 40

2 80

3 120

import java.util.Scanner;

public class Distance{
  public static void main(String [] args){
  Scanner keyboard = new Scanner(System.in);

  int time , speed ,  hour;
  double  distance;

  System.out.println("How fast were you going ?");
  speed = keyboard.nextInt();

  while(speed<=0)
  {
     System.out.println("Please enter a valid speed ");
     speed = keyboard.nextInt();
  }

  System.out.println(" How long did you ride / drive ?");
  time = keyboard.nextInt();

  while(time<=0)
  {
     System.out.println("Please enter a valid time ");
     time = keyboard.nextInt();
  }

  System.out.println(" Hour                         Distance");
  System.out.println("---------------------------------");
  hour = 0;


  for( int x = 1; x<=time; x++)
  {
     hour++;
     if(hour>1)
     {
        distance = time * speed;
        System.out.println(time+ "                " +distance);
     }
    }
   }
  }

解決方法は?

変数の削除 hourdistance .

ループ変数の名前を x から hour .

にループを単純化します。

for( int hour = 1; hour <= time; hour++)
    System.out.println(hour+ " " + (hour * speed));


もし、あなたが distance 変数を使用すると、それは double というのは、間違った型です。

  • 速度と時間の両方が int ということは、距離は int
  • の出力は double には小数点がありますが、要件では小数点が表示されていません。