Variablen if Anweisung falsch gesetzt

  • Themenstarter Themenstarter Ci
  • Beginndatum Beginndatum

Ci

Aktives Mitglied
Hallo Leute,
versuche mich gerade wieder an Java ranzutasten!
Wollte die Folgende Aufgabe lösen:

Aufgabenstellung:
Das Programm fragt welchen Artikel der Kunde möchte, den Preis und ob der Artikel per Express verschickt werden soll. Für Artikel unter €10 betragen die Versandkosten €2.00. Kostet der Artikel €10 oder mehr betragen sie €3.00. Der Expresszuschlag beträgt €5.00.

-> der Abschnitt mit den Versandkosten für den "Expressversand" wird einfach ignoriert wenn ich das Programm starte!???:L

hier mal mein Code:

Java:
import java.util.Scanner;

public class Delikatessen {
	public static void main(String[] a){
		
		Scanner scan = new Scanner(System.in);
		
		String artikel;
		
		final double VERSAND = 2.00;
		final double VERSANDEX = 5.00;
		int expressversand;
		
		double preis;
		double versandGesamt;
		
		System.out.print("Geben Sie den Artikel ein: ");
		artikel = scan.next();
		
		System.out.print("Geben Sie den Preis ein: ");
		preis = scan.nextDouble();
		
		System.out.println("Expressversand (0==nein, 1==ja)");
		expressversand = scan.nextInt();
		if(expressversand == 1)
		{
			versandGesamt = VERSANDEX + VERSAND;
		}
		
		if(preis >= 10)
		{
			versandGesamt =  1 + VERSAND;
		}
		else
		{
			versandGesamt = VERSAND;
		}
		
		System.out.println("Rechnung");
		System.out.println(artikel+":"+preis );
		System.out.println("Versand: " + versandGesamt);
		
		double gesamtPreis = preis + versandGesamt;

		System.out.println("Gesamt: " + gesamtPreis);
	}
}
 
System.out.println erzeugt am Ende einen Zeilenumbruch, der von nextDouble() nicht wieder konsumiert wird.
Wenn er an den Punkt mit dem Expressversand kommt, gibt es auf der Konsole bereits einen Zeilenumbruch, den der einlesen kann.

Lösung:
1) Nach nextDouble und nextInt noch einen scan.nextLine() einfügen
oder
2) statt nextDouble und nextInt gleich mit scan.nextLine einen String einlesen und den in das gewünschte Format parsen mit Double.parseDouble bzw. Integer.parseInt
 
Hab jetzt die Variante 1) ausprobiert, hat sich aber nichts getan.
mit der 2) kann ich im moment leider nicht viel anfangen 🙁

Kann es sein, dass meine versandGesamt Variable in der If-Anweisung (in Zeile 27) gar nicht den gewünschten Wert zugewiesen bekommt?
 
-> der Abschnitt mit den Versandkosten für den "Expressversand" wird einfach ignoriert wenn ich das Programm starte!???:L

Java:
		if(expressversand == 1)
		{
			versandGesamt = VERSANDEX + VERSAND;
		}
		
		if(preis >= 10)
		{
			versandGesamt =  1 + VERSAND;
		}
		else
		{
			versandGesamt = VERSAND;
		}

Ja schau dir diese beiden Bedingungen genau an.
Im 1.if weist du "versandGesamt" einen Wert zu. Im 2.if-else weist du "versandGesamt" wieder einen Wert zu ignorierst aber den bisherigen Wert dieser Variable 🙂 (der alte Wert wird somit einfach überschrieben)
 
Zuletzt bearbeitet:
Danke 🙂 !! daran lag es!

Hab jetzt in der ersten if-Anweisung einfach eine zusätzliche Variable erstellt.
 

Zurück
Oben