einlesen, abfrage

Uzi88

Mitglied
hallo ich habe folgende Aufgabe:

http://puu.sh/5Igxc.png



ich hab das eigentlich fast fertig geschrieben nur verstehe ich nicht wie ich diese abfrage machen soll ob er ein stamm kunde ist oder nicht? :(

(ich bin ziemlich neu in java, bzw. programmieren)
 

rme

Top Contributor
Hm. Vermutlich sollst du einlesen lassen, ob der Kunde ein Stammkunde ist und das Ergebnis in einer boolean-Variable speichern, die zum Beispiel [c]stammkunde[/c] heißt. Dann kannst du sie so abfragen:

Java:
if(stammkunde) {
  // setze Rabatt auf Stammkundenrabatt
} else {
  // setze Rabatt auf normalen Rabatt
}
 

Uzi88

Mitglied
Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next();
				
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;
		double skunde3 = 0.95;
		
		
		double gesamtpreis = anzahl * epreis; 
		
		if( anzahl < 10)
		{
			gesamtpreis = gesamtpreis * skunde1;
		}
		else if(anzahl >= 10 && anzahl < 200)
		{
			gesamtpreis = gesamtpreis * skunde2;
		}

		
	

			System.out.println(+gesamtpreis+"");
	} 
}

so sieht mein Code aus nur verstehe ich eben das mit dem stammkunden nicht
 
Zuletzt bearbeitet:

rme

Top Contributor
Du könntest prüfen, ob "ja" eingegeben wurde:

Java:
if(stammkunde.equals("ja")) {
 ...
}
 

Uzi88

Mitglied
oh gott es klappt endlich haha fühlt sich das gut an XD
viel viel dank :applaus::toll:

Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next(); 
		
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;
		double skunde3 = 0.95;
		
		
		double gesamtpreis = anzahl * epreis; 
		
		if( anzahl < 10 && stammkunde.equals("ja"))
		{
			gesamtpreis = gesamtpreis * skunde1;
		}
		else if(anzahl >= 10 && anzahl < 200)
		{
			gesamtpreis = gesamtpreis * skunde2;
		}
		else if (anzahl >= 200)
			gesamtpreis = gesamtpreis * skunde3;
		else{
			gesamtpreis = gesamtpreis *  skunde0;
		}

		
	

			System.out.println(+gesamtpreis+"");
	} 
}
 

rme

Top Contributor
Genieß den kognitiven Höhepunkt ;) Er wird so lange anhalten, bis der erste Stammkunde mehr als 10 Artikel kauft und sich wütend beschwert, dass er den Normalo-Rabatt bekommt.. :)
 

rme

Top Contributor
Stimmt, es ist umgekehrt: Wenn es mehr als 10 und weniger 200 Artikel sind, wird immer der Stammkundenrabatt genommen :)
 
Zuletzt bearbeitet:

Uzi88

Mitglied
ich hab das jetzt so geändert, aber irgendwie stimmt das nicht und ich komm nicht drauf warum.. kann jemand helfen? ;(

Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next(); 
		
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;

		
		
		double gesamtpreis = anzahl * epreis; 
		
		if( anzahl < 10 && stammkunde.equals("ja"))
		{
			gesamtpreis = gesamtpreis * skunde1;
		}
			else
			{
				gesamtpreis = gesamtpreis *skunde0;
			}
		if(anzahl >= 10 && anzahl < 200 && stammkunde.equals("ja"))
		{
			gesamtpreis = gesamtpreis * skunde2;
		}
			else
			{
				gesamtpreis = gesamtpreis * skunde1;
			}
		if (anzahl >= 200)
			gesamtpreis = gesamtpreis * skunde2;
	

			System.out.println(+gesamtpreis+"");
	} 
}
 

rme

Top Contributor
Du hast zwei dafür relevante if-Abfragen: Eine in Zeile 28 und eine in Zeile 36. Die in Zeile 28 hat aber keine Auswirkung, denn es wird ja auf jeden Fall eins von beiden wahr - der if-Teil in Zeile 38 oder der else-Teil 42. Dadurch wird der Gesamtpreis also auf jeden Fall überschrieben, weil einer dieser Zweige genommen werden muss.
 
Zuletzt bearbeitet:

rme

Top Contributor
Ich möchte dir nicht zu viel verraten, um die Ausbildung deiner Frustrationstoleranz nicht zu gefährden ;)

Es gibt da mehrere Varianten. Du darfst eine if-Abfrage auch innerhalb des Blocks (ein Block ist das, was mit {geschweiften} Klammern abgetrennt ist) machen. Es wäre zum Beispiel möglich, erstmal die if-Abfrage zu machen, ob es ein Stammkunde ist - im if-Fall dann die Abfrage nach der Menge, um den Preis für Stammkunden zu berechnen. Im Else-Fall der if-Abfrage für den Stammkunden dann die if-Abfragen für die Mengen der Nicht-Stammkunden-Preise.
 
Zuletzt bearbeitet:

Uzi88

Mitglied
hä? ???:L
ich bin mir nicht sicher ob ich dich richtig verstanden habe aber meinst du das so?

Java:
		if(stammkunde.equals("ja"))
		{
			
			if(anzahl <10)
			{
				gesamtpreis = gesamtpreis * skunde1;
			}
			else{
				gesamtpreis = gesamtpreis * skunde0;
			}
		if(anzahl >= 10 && anzahl < 200 && stammkunde.equals("ja"))
		{
			gesamtpreis = gesamtpreis * skunde2;
		}
			else
			{
				gesamtpreis = gesamtpreis * skunde1;
 

rme

Top Contributor
So ähnlich, der Anfang sieht gut aus.

Alles, was ab Zeile 2 passiert, betrifft nun nur noch Stammkunden. Du musst da also nur noch die Prüfungen machen, um Preise für Stammkunden zu ermitteln. Die erneute Abfrage in Zeile 11, ob der Kunde ein Stammkunde ist, fällt also weg.

Irgendwo schließt sich die Klammer für das if, das in Zeile 2 geöffnet wurde. Da kommt dann ein else hin, in dem du die gleichen Abfragen nochmal machst, aber andere Preise ermittelst.
 

Uzi88

Mitglied
ich checks echt nicht.. das will einfach nicht klappen, ich hab es jetzt so umgeschrieben kp was da wieder los ist

Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next(); 
		
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;

		
		
		double gesamtpreis = anzahl * epreis; 
		
		if(stammkunde.equals("ja"))
		{
			
			if(anzahl <10)
			{
				gesamtpreis = gesamtpreis * skunde1;
			
				if (anzahl >= 10 && anzahl < 200)
				{
					gesamtpreis = gesamtpreis *skunde2;
					
				}
					if(anzahl >= 200)
					{
						gesamtpreis = gesamtpreis *skunde2;
					}
			{
				gesamtpreis = gesamtpreis * skunde2; 
			}
		} 

	}
		else {gesamtpreis = gesamtpreis *skunde0;
		
		}System.out.println(+gesamtpreis+"");
}
}
 
Zuletzt bearbeitet:

rme

Top Contributor
Jetzt hast du ein bisschen zu viel verschachtest - in Zeile 35 schaust du z.B., ob die anzahl >= 10 ist, dabei befindet sich die Abfrage noch innerhalb einer anderen if-Abfrage, die sicherstellt, dass die anzahl < 10 ist. Das in Zeile 35 kann also nie wahr werden.

Vielleicht könntest du dir einen Programmablaufplan oder so zeichnen, um das erstmal graphisch zu lösen?
 

Uzi88

Mitglied
ok ich hab es soweit gelöst aber das ist so nicht komplett richtig

Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next(); 
		
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;

		
		
		double gesamtpreis = anzahl * epreis; 
		
		if(stammkunde.equals("ja"))
		{
			
			if(anzahl <10)
			{
				gesamtpreis = gesamtpreis * skunde1;
			}
			else if(anzahl >= 10 && anzahl <200)
				{
				gesamtpreis = gesamtpreis * skunde2;
				}
			else if(anzahl >200)
			{
				gesamtpreis = gesamtpreis * skunde2;
			}
	}
		else {gesamtpreis = gesamtpreis *skunde0;
		
		}System.out.println(+gesamtpreis+"");
}
}

mir fehlt das "wenn kein stammkunde aber mehr als 10 artikel"
 

rme

Top Contributor
Der Teill "wenn kein Stammkunde" ist bei dir Zeile 44. Da setzt du unabhängig von der Anzahl den Rabatt auf skunde0. Beheben kannst du das, indem du die if-Abfragen aus Zeile 31 - 42 dort wiederholst, aber eben andere Preise vergibst :)
 

Uzi88

Mitglied
rat mal wer endlich die lösung hat -.-

Java:
import java.util.Scanner;


public class Aufgabe37 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		
		System.out.println("Einzelpreis? ");
		double epreis = scan.nextInt();
		
		System.out.println("Anzahl? ");
		double anzahl = scan.nextDouble();
		
		System.out.println("Stammkunde?");
		String stammkunde = scan.next(); 
		
		double skunde0 = 1;
		double skunde1 = 0.97;
		double skunde2 = 0.95;

		
		
		double gesamtpreis = anzahl * epreis; 
		
		if(stammkunde.equals("ja"))
		{
			
			if(anzahl <10)
			{
				gesamtpreis = gesamtpreis * skunde1;
			}
			else if(anzahl >= 10 && anzahl <200)
				{
				gesamtpreis = gesamtpreis * skunde2;
				}
			else if(anzahl >=200)
			{
				gesamtpreis = gesamtpreis * skunde2;
			}
	}
		else {
			if(anzahl <10)
			{
				gesamtpreis = gesamtpreis * skunde0;
			}
			else if(anzahl >= 10 && anzahl <200)
				{
				gesamtpreis = gesamtpreis * skunde1;
				}
			else if(anzahl >=200)
			{
				gesamtpreis = gesamtpreis * skunde2;
			}
		}
		System.out.println(+gesamtpreis+"");
}
}

keine widersprüche bitte :bae:
 
Zuletzt bearbeitet:

rme

Top Contributor
Eine Schleife würde hier nicht helfen, da ja keine Ausführung von irgendwas wiederholt werden soll.

Man könnte höchstens sehen, dass der Fall anzahl >= 200 bei beiden gleich behandelt wird und ihn getrennt abfragen.. aber ob es das übersichtlicher macht, ist eine andere Frage - ich denke nicht, denn wenn man das Programm später mal anpassen möchte, wäre es seltsam, dass einige Preise innerhalb und andere außerhalb der Stammkunden-Abfrage geändert werden.

Ansonsten: Da sind 6 unterschiedliche Fälle, das ergibt eine Entropie von 2.5sh, was nichts anderes bedeutet, als dass du mindestens 3 if-Abfragen benötigen wirst, um das Problem zu lösen. Falls du interessiert bist, wie das mit 3 Abfragen geht, könnte ich dir den Code zeigen - aber er wäre dann sehr seltsam und unwartbar. In der Praxis würde man es mit deinen Mitteln so machen, wie du es gemacht hast.

Später könnte man das mit Datenstrukturen lösen, damit der Code schöner aussieht, aber da kommst du noch hin :)

Edit: Die Fragen zur neuen Aufgabe in einen neuen Thread
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
J Zahlen aus Konsole einlesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben