2016-07-01 5 views
0

Ok, also, wenn ich den Code, nach der Eingabe in keine oder irgendetwas, was falsch ist, verwendet, springt mein Programm nicht auf die Else-Anweisung ganz unten (außerhalb der verschachtelten if_Else-Anweisung) Was mache ich falsch? Ich habe versucht, es mit sonst zu initiieren, wenn (ja! = Wahr) oder Else (! Ja), ich meine, Sie nennen es, einschließlich der Änderung der Anfangsargumente und der Imputation (yes == true^no == true), definiert jedoch eine andere boolesche Variable nein und auch wahr!Wie man einen boolean mit zwei Bedeutungen innerhalb einer if, verschachtelte if, else Anweisung

import java.util.Scanner; 
public class Flights 
{ 
    public static void main(String args[]){ 
    String txt; 
    boolean yes=true; 

    Scanner type=new Scanner(System.in); 
    int days; 

    System.out.println("Is this a round trip? "); 
    txt=type.next(); 

     if(yes==true){ 
      System.out.println("How many days in advance do you plan to book your flight?: "); 
      days=type.nextInt(); 
      if(days>180)   
       System.out.println("Error: Flights can't be booked for more than 180 days out");  

      else if(days<=180 && days>=14) 
       System.out.println("Your flight cost is: $275"); 

      else if(days<14 && days>=7) 
       System.out.println(" Your flight cost is: $320"); 

      else if(days<7) 
       System.out.println("Your flight cost is: $440"); 
        } 
     else 
      { 
       System.out.println("Enter your discount code"); 

      }     


    } 
} 
+1

Sie änderten nie den Wert von 'zu bejahen ist, basierend auf dem Input! Es wird immer wahr sein, wenn Sie es nicht ändern. – 4castle

+0

Meinst du, setze das Äußere sonst auf folgendes: sonst if (yes! = True) {SOP();} \ –

+0

Vielen Dank an alle! ... Ich schätze die Hilfe! ... Nguyen Tuan Anhs Methode hat funktioniert!!! Jetzt muss ich nur verstehen, was zur Hölle diese Worte bedeuten lol. ICH LIEBE CODING! ... aber verdammt, es wird einige Zeit dauern! ... –

Antwort

1

Nun, initiieren Sie die yes Variable true, und haben es nicht auch immer aktualisieren, bevor Sie die bedingte Anweisung beginnen, wo Sie den Wert yes zu true vergleichen. Das ist das Problem.

Dies ist, wo Sie beginnen:

boolean yes=true; 

und dann warten Sie für Benutzer eingeben, aber nicht aktualisieren den yes Wert stattdessen Sie voran gehen und überprüfen Sie es so.

if(yes==true){ 
} 

Dies führt zu der Else-Anweisung wird nie erreicht werden.


Was könnten Sie tun, ist nach dieser Zeile:

txt=type.next(); 

Sie können den Wert der yes Variable aktualisieren, so etwas wie dieses:

txt=type.next(); 
yes = (txt != null) && "yes".equals(txt.toLowerCase()); 

if(yes==true){ 
    //... 
} else { 
} 

Hoffnung, das hilft.

1

Damit Ihr Programm aufgrund der Benutzereingabe eine Entscheidung treffen kann, müssen Sie sich den Wert txt ansehen.

Ihren Code so etwas wie dies ändern:

yes = txt.equalsIgnoreCase("yes"); 
if (yes == true) { 
    ... 
} else { 
    ... 
} 

Oder noch kürzer:

if (txt.equalsIgnoreCase("yes")) { 
    ... 
} else { 
    ... 
}