Ich vesuche gerade ein kleines Programm zu schreiben, dass die Anzahl der Waren in einem Lagerraum überprüft und auch ob der Käufer dafür bezahlt hat. Dafür benutze ich eine boolean-Variable. Am anfang habe ich den Wert "false" gesetzt, da der Käufer immer noch nichts gekauft hat. Wenn er/sie was kauft soll den Wert der boolean-Variable auf "true" gesetzt werden. Dafür habe ich paar if-else Abfragen gesetzt. Das Problem ist, dass egal, ob man dafür bezahlt hat oder nicht, wird am Ende immer eine Meldung ausgegeben, dass der Kauf abgeschloßen ist.
Könnt ihr mir hierbei helfen?
P.S. - Ich weiß, dass mein Code unubersichtlich ist. Bin Anfänger.
Java:
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassLager{publicstaticvoidmain(String[] args)throwsIOException{int inventory =10;boolean payed =false;int answer =5;System.out.print("To continue please solve the following problem:\n");System.out.print("What is 13 - 7? ");InputStreamReader isr =newInputStreamReader(System.in);BufferedReader br =newBufferedReader(isr);String inputAnswer = br.readLine();int result =Integer.parseInt(inputAnswer);if(answer == result){System.out.print("How many items would you like to order?");String userInput = br.readLine();int ordered =Integer.parseInt(userInput);if(ordered <= inventory){System.out.print("Pay now?");System.out.print("[Y]/[N]");String pay = br.readLine();if(pay =="Y") payed =true;System.out.print("Thank you for your purchase!");}elseif(ordered > inventory){System.out.print("Not enought items!\n");System.out.print("Items in our inventory: "+ inventory);}else{System.out.print("You still need to pay for the selected items!");}}}}
if(pay =="Y") payed =true;System.out.print("Thank you for your purchase!");
Das ist richitg, denn auf ein if folgt der then-Teil, das kann eine einzelne Anweisung oder ein Block sein. In Deinem Fall ist es eine einzelne Anweisung: payed = true; Danach ist das if abgeschlossen und es folgt das System.out.println()
Du willst
Java:
if(pay =="Y"){
payed =true;System.out.print("Thank you for your purchase!");}
Alternativ kannst Du natürlich nach dem if ein weiteres einfügen, um abzufragen, ob payed zuvor gesetzt wurde:
Java:
if(pay =="Y"){
payed =true;}if(payed){System.out.print("Thank you for your purchase!");}
Also zwei Dinge:
1) String vergleicht man nicht mit == sondern mit equals.
2) Die Logik wird immer "Thank you for your purchase!" ausgeben, da das außerhalb des if kommt. Lediglich payed wird auf true gesetzt, was an der Stelle egal ist, weil ja nichts weiter gemacht wird....