Использование сравнения строк в логическом значении, определенном как аргумент командной строки - PullRequest
0 голосов
/ 22 сентября 2019

Я пишу программу для определения стоимости бензина с учетом цены за галлон и количества купленных галлонов, а также с учетом способа оплаты (наличными или в кредит).Чтобы прочитать способ оплаты, я определил строку с именем paymentMethod в качестве третьего аргумента, вводимого в командной строке, как показано ниже:

    public class gas{
    public static void main(String[] args){
        double pricePerGallon=Double.parseDouble(args[0]);
        double gallonsPurchased=Double.parseDouble(args[1]);
        String paymentMethod=args[2];
        String cash="cash";
        String credit="credit";
        if (pricePerGallon>0 && gallonsPurchased>0){
            **if (paymentMethod==cash)**
            {
            System.out.println(pricePerGallon*gallonsPurchased);
            }
            else if (paymentMethod==credit)
            {
            System.out.println(1.1*pricePerGallon*gallonsPurchased);
            }
        }
        else{
            System.out.println("Error");
        }
    }
}

Я вижу, если третий аргумент (который является строкой)это строка «наличные», в этом случае стоимость газа рассчитывается и печатается.Если это кредит, взимается дополнительная комиссия в размере 10%.

Проблемы возникают с логическим значением "(paymentMethod == cash)".Моя программа компилируется, и я могу запустить ее, но когда я нажимаю Enter, ничего не возвращается.Даже не вычисление цены.

1 Ответ

0 голосов
/ 22 сентября 2019

Вам нужно использовать метод equals.Оператор == не работает со строками в Java так, как вы бы этого хотели.

Измените:

if (paymentMethod==cash)

на

if (paymentMethod.equals(cash))

И аналогично для кредитаусловно.

...