-1

我对这个java作业有点麻烦。我对这项编程工作还是很陌生。我无法让程序执行以下操作:科学家以千克为单位测量物体的质量,以牛顿为单位测量其重量。如果你知道一个物体的质量,你可以用下面的公式计算它的重量,以牛顿为单位:

重量 = 质量 X 9.8

编写一个程序,要求用户输入一个物体的质量,然后计算它的重量。如果对象的重量超过 1000 牛顿,则显示一条消息,指示它太重。如果对象的重量小于 10 牛顿,则显示一条消息,指示对象太轻。

这是我到目前为止所写的:

import java.util.Scanner;

public class MassandWeight{

    public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);

        double mass;

        System.out.print("Please enter the object's mass: ");
        mass = keyboard.nextDouble();

        // Convert the mass to weight using the following expression:
        double weight = (mass * 9.8);

        if (weight >= 10 && weight <= 1000)
            System.out.println("The weight of the object is " + weight + ".");

        else if (weight > 1001)
            System.out.println("The object's weight is too heavy.");

        else if (weight < 9)
            System.out.println("The object's weight is too light.");
    }
}

所以一切都很好!我真的为自己能走到这一步感到自豪。但是,当我输入“1”时,我没有得到任何回复。其他一切都很好。如果您需要更多信息,请告诉我。谢谢!!

4

6 回答 6

5

您正在检查weight(-∞, 9)、[10, 1000] 和 (1001, +∞) 的值。这意味着您缺少 [9 和 10) 和 (1000, 1001] 中的值。如果您输入1weight则将是9.8并且您将丢失它。

这是您if的 s 应该看起来的样子,而不是:

if (weight >=10 && weight <= 1000) ...      
else if (weight > 1000) ...
else if (weight < 10) ...
于 2013-02-03T21:01:17.847 回答
0

因为是作业,所以我不会把它全部讲出来......但是检查你的 if/else......也许在最后放一个 else,这样你就可以看到你的 else if 没有捕捉到的场景。

于 2013-02-03T20:58:37.530 回答
0

当您输入1时,权重 = (1* 9.8) = 9.8

你有3个条件:

1- 重量 >=10 && 重量 <= 1000

2- 重量 > 1001

3- 重量 < 9

所以9.8不符合这个条件

else {}最后需要

于 2013-02-03T21:02:23.690 回答
0

检查最后一个 else 语句。它不检查是否小于10。当权重> 9 && < 10 时,不执行任何语句(输入1 设置权重为9.8)

于 2013-02-03T21:03:50.993 回答
0

你必须改变

else if (weight < 9)

else if (weight < 10)

else if (weight > 1001) 

else if (weight > 1000)
于 2013-02-03T21:07:21.057 回答
0

我以保证路径执行的方式编写这样的 else-if 语句。考虑以下:

if (weight < 10) {
  // too light
} else if (weight > 1000) {
  // too heavy
} else {
  // just right - this MUST be the case if
  // the previous branches are not selected
}

使用这样的方法可以帮助我减少编程错误并通过消除重复比较来提高可重构性。我也发现它更容易阅读。

请参阅TDWTF:但是……任何事情都可能发生!对于重复比较的极端变态:发布的代码并没有那么糟糕,但在我看来,它存在同样的基本缺陷。

于 2013-02-03T21:12:36.040 回答