4

我应该给程序两个参数:一个是当前速度,以 mph 为单位,另一个是速度限制,以 kph 为单位。我的程序必须使用转换器文件将您的当前速度更改为 kph,以便与速度限制进行比较,然后通过仪表板显示警告用户他们正在超速。但如果只给出一个 arg,程序必须使用 40kph 作为默认速度限制。我的问题在于不知道如何为缺少 args 编写 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 只是一个字符串数组 - 您可以在任何 Array 对象上使用 .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

与您的问题有关。当心你的代码有一个严重的缺陷:你不应该像这样使用;after if

if (speed > limit); 
    return true;

由于没有大括号,它将运行空语句,并且每次都会返回 true,即使speed <= limit. ;从你的 ifs中删除:

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

一个简单的 1 行选项是三级运算符:

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