Distance Traveled循环帮助Java

时间:2014-10-16 21:40:21

标签: java for-loop

我一直绞尽脑汁想弄清楚为什么我的程序没有正确循环。而不是获得每小时的增量,我只得到最后的小时/速度。因此,如果我说我将以每小时40英里的速度行驶3小时,我只会得到120英里。

问题在于:

车辆行驶的距离可以按如下方式计算: 距离=速度*时间 例如,如果火车每小时行驶40英里,持续3小时,则行驶的距离为120英里。编写一个程序,询问车辆的速度(以英里/小时为单位)和行驶的小时数。它应该使用循环来显示车辆在用户指定的时间段内每小时行驶的距离。例如,如果车辆以40英里/小时的速度行驶3小时,则应显示类似于下面的报告: 行驶的小时距离

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);
     }
    }
   }
  }

2 个答案:

答案 0 :(得分:0)

在你的循环中使用小时而不是时间,

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

或只使用x

答案 1 :(得分:0)

删除变量hourdistance

将循环变量的名称从x更改为hour

只需循环播放:

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

请注意,如果您使用了distance变量,那么double是错误的类型,因为:

  • 速度和时间均为int,因此距离必须为int
  • double的输出有一个小数点,但您的要求没有显示一个