【问题标题】:Distance Traveled loop help Java距离旅行循环帮助 Java
【发布时间】:2014-10-16 21:40:20
【问题描述】:

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

问题来了:

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

1 40

2 80

3120

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

【问题讨论】:

  • distance = hour * speed; 而不是 distance = time * speed;
  • 另外,在你的 for 循环中,你可以只使用 x 而不是 hour。如果有帮助,您可以先删除 hour 的所有实例,然后将 hour 重命名为 x

标签: java for-loop


【解决方案1】:

删除变量hourdistance

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

简单地循环到:

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

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

  • 速度和时间都是int,所以距离必须是int
  • double 的输出有一个小数点,但您的要求没有显示一个

【讨论】:

  • 感谢您的帮助。还要感谢您指出我的其他错误,整天都在努力解决这个问题!
  • 不用担心。几乎总是,更少的代码是好的(只要它是可读的)。更少的代码更易于阅读和调试。
【解决方案2】:

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

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

或者只使用 x

【讨论】:

  • 感谢您的帮助,它从 80 开始,这很好,我能够修复它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多