2014-10-02 3 views
-1
package cheapoplanner; 

import java.util.Scanner; 

public class Travel extends CheapoPlanner { 

    protected int passenger; 
    protected double trainRate = 0.15; 
    protected boolean hasCar; 
    protected int carParkingFee = 30; 
    protected int milesToAirport; 
    protected double carRate = 0.30; 
    protected double flightRate = 0.10; 
    protected int milesFlying; 
    protected double coachRate = 0.50; 
    protected int milesToDestination; 
    protected String startLetter; 
    protected String endLetter; 

    Scanner sc = new Scanner(System.in); 

    protected void lengthChecker(String startLetter, String endLetter) { 

    } 

    protected boolean lettersDoMatch() { 

     if (startLetter.toLowerCase() == endLetter.toLowerCase()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    protected void greeting() { 
     System.out.print("What is your first airport? (Choose A, B, C, D, or E): "); 
     startLetter = sc.nextLine(); 
     System.out.print("What is your destination? (Choose A, B, C, D, or E): "); 
     endLetter = sc.nextLine(); 

     if (lettersDoMatch() == true) { 
      System.out.println("letters can't match"); 
      greeting(); 
     } 

     System.out.println("code past last pt."); 
    } 
} 

В моем основном методе я назвал метод приветствия(). Цель состоит в том, чтобы подтвердить, что аэропорт и пункт назначения не являются тем же письмом. Это делается в методе letterDoMatch(). Какое бы значение не возвращалось, в приветствии() я делаю логическое сравнение. Если это правда (чего не должно быть), я распечатываю предупреждение, и он должен вернуться к началу приветствия. В противном случае я ожидаю, что этот блок кода будет пропущен. Я запутался, потому что, когда я запускаю свой код, когда я печатаю две буквы, которые являются одинаковыми, это не относится к началу метода приветствия(). Что происходит, так это то, что я перехожу прямо к «code last last pt». Я что-то имею в методе greeting()? Или что-то в методе letterDoMatch()? Или комбинация вещей?Java не обрабатывает логику, как я ожидаю

+0

Струнный Comparation в Java:. 'StartLetter.toLowerCase() равно (endLetter.toLowerCase())' – Krayo

+1

возможно дубликат [ Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-compare-strings-in-java) – njzk2

ответ

1
if (startLetter.toLowerCase() == endLetter.toLowerCase()) { 

должен быть

if (startLetter.toLowerCase().equals(endLetter.toLowerCase())) { 

или

if (startLetter.equalsIgnoreCase(endLetter)) { 

Сравнение строк с == в Java не сравнить их содержание. Вот почему существуют методы equals.

См How do I compare strings in Java?

Вы можете просто упростить этот метод к:

protected boolean lettersDoMatch() { 
    return startLetter.equalsIgnoreCase(endLetter); 
} 
+0

yup, похоже, что это проблема .. спасибо !! – irradio

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