Pertanyaan Menggunakan pernyataan “if” jika tidak ada arg


Saya seharusnya memberikan program dua argumen: satu untuk kecepatan saat ini dalam mph dan yang lainnya, batas kecepatan dalam kph. Program saya harus menggunakan file konverter untuk mengubah kecepatan Anda saat ini ke kph sehingga dapat dibandingkan dengan batas kecepatan kemudian memperingatkan pengguna melalui layar Dashboard yang sedang mereka kebut-kebutan. Tetapi jika hanya satu arg yang diberikan, program harus menggunakan 40kph sebagai batas kecepatan default. Masalah saya terletak pada tidak tahu bagaimana cara mengkodekan pernyataan IF karena kurangnya argumen. Membantu!?!

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
2018-02-13 19:52


asal


Jawaban:


Cukup gunakan:

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

* Hal ini dimungkinkan karena args hanyalah Array of Strings - Anda dapat menggunakan properti .length pada objek Array apa pun.


7
2018-02-13 19:53



Ini seharusnya berfungsi. Cukup tetapkan SpeedLimit ke 40 secara default dan jika 2 argumen dilewatkan, perbarui ke batas kecepatan yang benar.

    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]);
    }

Berikut ini contoh yang lebih lengkap tentang bagaimana Anda dapat menyiapkan ini.

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;
    }
}

4
2018-02-13 20:03



terkait dengan pertanyaan Anda. hati - hati bahwa kode Anda memiliki cacat yang serius: Anda seharusnya tidak menggunakan ; setelah sebuah ifseperti ini:

if (speed > limit); 
    return true;

Karena tidak ada tanda kurung, itu akan menjalankan pernyataan kosong dan itu akan mengembalikan waktu setiap detik, bahkan jika speed <= limit. Hapus ; dari ifs Anda:

if (speed > limit)
    return true;

1
2018-02-13 19:57



Opsi 1 baris sederhana adalah operator tersier:

limit = args.length == 2 ? args[1] : 40;

0
2018-02-13 20:26