2012-09-25 2 views
2

Привет, ребята, я близок к концу задания, и я склонен всегда зацикливаться на проблемах if/else на Java. мой маленький фрагмент здесь:Оператор IF с использованием строк

// a taxi fare program where if pickup or drop off point is the airport 
// and\or CBD the surcharge changes accordingly. 

if(!pickup.equals("CBD") && !dropOff.equals("CBD")) { 
    Surcharge = 15.0; 
} else if (!pickup.equals("airport") && !dropOff.equals("CBD")) { 
    Surcharge = 15.0; 
} else if (!pickup.equals("airport") || !dropOff.equals("airport")) { 
    Surcharge = 10.0; 
} else if (!pickup.equals("CBD") || !dropOff.equals("CBD")) { 
    Surcharge = 5.0; 
} else { 
    Surcharge = 0.0; 
} 

Не ошибка, но, похоже, не правильная проверка. Например, если я помещаю "airport" в качестве пикапа, но затем в случайном месте для dropOff, он все равно выдает надбавку в размере 15 долларов, если она должна быть 10 долларов США. Но если я положил "CBD" как pickup, а в аэропорт, как выпадающий, он правильно напечатал 15 долларов. Извините, если это недостаточно очевидно, но первый таймер здесь. Я провел выходные по аналогичной проблеме, которая была чем-то чертовски очевидной. Кажется, что сбой if, даже если он, очевидно, должен быть true.

+2

Покажите нам правила на английском языке, например «любая поездка из КБР в любую точку за пределами КБР несет 15 долларов». В порядке предпочтения. – paxdiablo

+0

Что означает u в случайном порядке? –

+1

@paxdiablo имеет смысл, если вы объясните это сами, вы увидите проблему. Вот почему я разговариваю с http: // разработчиком.com – JKirchartz

ответ

1

вы кладете аэропорт, как пикап, который означает, что первое условие

if(!pickup.equals("CBD") && (!dropOff.equals("CBD"))){ Surcharge = 15.0; }

является действительным. Поскольку пикап не CBD, а аэропорт.

Надеюсь, это поможет.

+0

ах дерьмо его всегда просто глупая ошибка! извините за такой большой вопрос, чем = ( – nathan

+0

Это не совсем правильно. Аэропорт-CBD не будет взимать дополнительную надбавку в размере 15 долларов, поскольку второе условие будет ложным. Аэропорт-где-то еще будет $ 15. – paxdiablo

0

На простом английском языке, ваше первое заявление, если-говорит:

Если человек не взял из КБР и они не высадили в КБР, а затем зарядить их $ 15.

В результате, если ни пикап, ни место высадки не являются CBD (даже если один из них является аэропортом), тогда результат будет составлять 15 долларов США.

Это может быть проще подойти к проблеме с помощью положительных тестов (например, «если подвозки или пикап расположение является КБР») вместо отрицательных тестов (например, «если подвозки или пикап расположение является не CBD ").

0

Вот что ваши правила говорят на английском языке:

  1. Любая поездка полностью за пределами центрального делового района -> $ 15
  2. В противном случае, любая поездка не выходя из аэропорта и не прибывает в КБР -> $ 15
  3. в противном случае, любая поездка, где начинаются или заканчиваются не аэропорт -> $ 10
  4. в противном случае, любая поездка, где начинаются или заканчиваются не КБР -> $ 5
  5. в противном случае -> $ 0.

Вам необходимо установить, если это то, что вы хотите, или вы должны дать нам на английском правила, чтобы мы могли проверить свою логику.

Для начала ваша конкретная поездка из аэропорта в случайное местоположение (кроме CBD) будет нести 15 долларов США - см. Правило 1 выше.

Смежные вопросы