-1

この Java の宿題に少し問題があります。私はまだこのプログラミング作業にかなり慣れていません。プログラムに次のことをさせるのに問題があります: 科学者は物体の質量をキログラムで、その重量をニュートンで測定します。オブジェクトの質量がわかっている場合は、次の式を使用してその重量をニュートン単位で計算できます。

重量=質量×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] の値が欠落していることを意味し1ます。weight9.8

代わりに、あなたifの s は次のようになります。

if (weight >=10 && weight <= 1000) ...      
else if (weight > 1000) ...
else if (weight < 10) ...
于 2013-02-03T21:01:17.847 に答える
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 に答える
0

あなたは変わらなければならない

else if (weight < 9)

else if (weight < 10)

else if (weight > 1001) 

else if (weight > 1000)
于 2013-02-03T21:07:21.057 に答える
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 に答える