4

私はプログラムに 2 つの引数を与えることになっています。私のプログラムは、コンバーター ファイルを使用して現在の速度を kph に変更し、速度制限と比較してから、ダッシュボードの表示を介してユーザーが速度を上げていることを警告する必要があります。ただし、引数が 1 つしか指定されていない場合、プログラムはデフォルトの速度制限として 40kph を使用する必要があります。私の問題は、引数がない場合に IF ステートメントをコーディングする方法がわからないことにあります。ヘルプ!?!

public class DetailedSpeedSetter

{

public static void main(String args[])
{
        double kph;
        double mph;
        double SpeedLimit;


        mph = Text.toNonnegativeDouble(args [0]);

        kph = Converter.toKPH(mph);

        SpeedLimit = Text.toNonnegativeDouble(args[1]); 



 /**
 * Determines whether the given speed exceeds the given limit
 *
 * @param speed      The speed in km/hr
 * @param limit      The speed limit in km/hr
 * @return           true if speed exceeds limit and false otherwise
 */
public static boolean isSpeeding(double speed, double limit)
{
    speed = kph;
    limit = SpeedLimit;

    if (speed > limit); 

    return true;

   if (speed <= limit);

    return false;

        }


        Dashboard.setSpeed(kph);
        Dashboard.setSpeeding();

        }
    }
4

4 に答える 4

7

使用するだけです:

SpeedLimit limit;
if (args.length < SOME_NUMBER) {
    limit = 40;
}

*これが可能なのは、args が単なる文字列の配列であるためです。任意の配列オブジェクトで .length プロパティを使用できます。

于 2013-02-13T19:53:58.657 に答える
4

これは機能するはずです。デフォルトでSpeedLimitを40に設定し、2つの引数が渡された場合は、正しい速度制限に更新します。

    double SpeedLimit = 40;
    double mph = Text.toNonnegativeDouble(args[0]);
    double kph = Converter.toKPH(mph);

    if (args.length == 2)
    {
       // You have two args
       SpeedLimit = Text.toNonnegativeDouble(args[1]);
    }

これを設定する方法のより完全な例を次に示します。

public class DetailedSpeedSetter
{
    public static void main(String args[])
    {
        double mph = Text.toNonnegativeDouble(args [0]);
        double kph = Converter.toKPH(mph);;
        double SpeedLimit = 40;

        if (args.length == 2)
        {
            SpeedLimit = Text.toNonnegativeDouble(args[1]); 
        }

        Dashboard.setSpeed(speed);

        if (isSpeeding(kph, SpeedLimit))
        {
            Dashboard.setSpeeding(true);
        }
        else
        {
            Dashboard.setSpeeding(false);
        }
    }

     /**
     * Determines whether the given speed exceeds the given limit
     *
     * @param speed      The speed in km/hr
     * @param limit      The speed limit in km/hr
     * @return           true if speed exceeds limit and false otherwise
     */
    public static Boolean isSpeeding(double speed, double limit)
    {
        if (speed > limit)
        {
            return true;
        }

        return false;
    }
}
于 2013-02-13T20:03:08.487 に答える
1

あなたの質問に関連しています。あなたのコードには重大な欠陥があることに注意してください: 次のような;後に を 使用しないでください:if

if (speed > limit); 
    return true;

中括弧がないため、空のステートメントが実行され、たとえspeed <= limit. ifs から を削除;します。

if (speed > limit)
    return true;
于 2013-02-13T19:57:44.313 に答える
0

シンプルな 1 行のオプションは、3 番目の演算子です。

limit = args.length == 2 ? args[1] : 40;
于 2013-02-13T20:26:25.403 に答える