1

如果这似乎是一个简单的问题,我深表歉意,但我有一个问题正在尝试解决,并且还没有完全了解如何正确显示结果。所以基本上它要求接受用户输入的汽车行驶一定距离。所以我使用扫描仪对象来获取时间(以小时为单位)以及速度(mps)。因此,要获得距离,您只需将这两个值相乘即可。但我的问题在于显示,我使用了一个 for 循环来显示用户每小时行进了多少距离(从 1 开始 - 直到它达到用户输入的时间)for 循环如下所示:

    // Calculate and display distance traveled
    distance = speed * time;
    System.out.println("Hour Distance Traveled");
    System.out.println("--------------------------");

    for (time =1; time <= distance/speed; time++)
    {
             System.out.println(time + "\t" + distance);
    }

所以我显然被困在如何以增量形式显示距离,比如如何显示时间,我不确定如何去做,更重要的是,如果 for 循环是在这种情况下使用的合适循环。我不是要求为我解决问题,但我会很感激任何关于如何解决它或我做错了什么的建议或解释。

4

4 回答 4

2

在循环的每次迭代中,您希望将时间(在当前迭代中)乘以速度,而不是使用最终计算的距离。

所以:

System.out.println("" + time + "\t" + ( time * speed ) );

应该为你工作。

编辑详细说明以回答评论

您执行相同的任务两次。计算结果一次,跟踪一次。您可以将两者连接起来,这样就可以显示计算出的进度。当然,如果你不需要打印任何东西,你可以像以前一样执行乘法...

/* time and speed received from user. */
/* initialize distance */
distance = 0;
for (int i = 1; i <= time; i++)
{
    /* increment distance in each iteration */
    distance += speed;
    /* print as you progress */
    System.out.println(i + "\t" + distance);
}
于 2013-10-20T02:28:56.543 回答
1

我使用扫描仪对象来获取时间(以小时为单位)以及速度(mps)。

好吧,如果我理解正确的话,这可能就是你想要的:

for (time =1; time <= inputTime; time++)
    {
            distance = inputSpeed * time;
             System.out.println(time + "\t" + distance);
    }
于 2013-10-20T02:28:20.600 回答
1
for (time =1; time <= endTime; time++)
{
         distance = speed * time;
         System.out.println(time + "\t" + distance);
}

你只需要更新循环中的距离

于 2013-10-20T02:28:58.463 回答
0

您会感到困惑,因为您试图在同一代码块中为两个不同的事物重用相同的变量“时间”和“距离”——既适用于整个行程,也适用于每个小时的块。使用不同的变量名,它就变得容易多了。

因此,您阅读了旅程的“时间”和“距离”——这就是“tripHours”和“tripDistance”。

在你的循环中,你正在计算小时数,所以你可以有类似的东西:

int tripDistance = speed * tripHours;
for (int hour = 1; hour <= tripHours; hour++)
    int distance = hour * speed;
于 2013-10-20T02:39:00.570 回答