2011-10-16 14 views
20

Próbowałem zrobić zegar, który użytkownik może ustawić. Chciałem, aby użytkownik był zadawanych pytań, a oni odpowiadali słowami "tak" lub "nie". Zrobiłem to dla rzeczy, które nie zmieniają się przy użyciu tego kodu, na przykład, czy użytkownik chce, aby sekundy były wyświetlane, czy nie, ale nie działa tak dobrze, gdy chcę, aby ciąg się zmienił, np. Od AM do PM podczas godzin przekracza 12. Oto czego używam:Jak sprawdzić, czy ciąg nie jest równy obiekt lub inne wartości ciągu w java?

System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in); 
    TimeOfDayStringQ = TimeOfDayQ.next(); 

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) { 
     System.out.println("Sorry, incorrect input."); 
     System.exit(1); 
    } 

    ... 

    if(Hours == 13){ 
     if (TimeOfDayStringQ.equals("AM")) { 
      TimeOfDayStringQ.equals("PM"); 
     } else { 
      TimeOfDayStringQ.equals("AM"); 
     } 
       Hours = 1; 
     } 
    } 

każdym razem, kiedy wchodzi coś, kiedy prosi mnie, czy mogę umieścić aM, PM lub inny mądry, to daje mi błąd napisałem, a następnie kończy . Po usunięciu fragmentu kodu, który kończy program z błędem, nie zmieni on ciągu znaków z AM na PM, gdy godziny wynoszą 13. Dziękuję za pomoc, jest to bardzo cenne.

+3

Jako obserwacji, aby uniknąć nieporozumień, zmienne Java powinien zacząć małymi literami. –

Odpowiedz

25

Zmień swój kod do:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in); 
TimeOfDayStringQ = TimeOfDayQ.next(); 

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <-- 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

... 

if(Hours == 13){ 
    if (TimeOfDayStringQ.equals("AM")) { 
     TimeOfDayStringQ = "PM"; // <-- 
    } else { 
     TimeOfDayStringQ = "AM"; // <-- 
    } 
      Hours = 1; 
    } 
} 
13

będziemy chcieli użyć & &, aby zobaczyć, że nie jest równy „AM”, a nie równa się „PM”

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

być jasne, można też zrobić

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){ 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

do uzyskania w kodzie not (one or the other) frazy (pamiętaj o (cichych) nawiasach)

+0

Dziękuję bardzo. Jestem trochę nowy w Javie i prawdopodobnie dlatego popełniłem taki prosty błąd. Dziękuję Ci bardzo. – Pillager225

1

Zmień || do & &, więc zakończy się tylko wtedy, gdy odpowiedź brzmi "Ani" AM "ani" PM ".

Powiązane problemy