Gleiche Arrays aus einem Array mit Objekten

Yurek

Mitglied
Hi,

ich mal wieder mit einer Aufgabe wo ich einfach nicht weiter komme. Ich soll bei dieser Aufgabe einen Einkauf simulieren mit Ein und Ausgaben usw. Wir dürfen keine ArrayList, standart Suchalgorithmen oder so was wie eine HashMap benutzen. Bisher ist alles richtig aber in der letzten Aufgabe sollen wir ein Rabattsystem einbauen. Wenn 6 mal der gleiche Artikel im Einkaufswagen ist, bekommt der Kunde eins kostenlos.

Wichtig dabei ist, dass der Kunde zum Beispiel erst 3 Kaffee kaufen kann dann 3 Milch und dann wieder 3 Kaffee. Natürlich möchte er dann den Rabatt für die 6 Kaffee haben. Das heißt ich muss durch meine Liste nach jedem einkauf laufen und überprüfen ob ein Artikel 6 mal vorhanden ist und so den Preis senken. Natürlich kann ein Kaffee auch 12 mal bestellt worden sein dann gibts 2 Gratis, deswegen das Modulo 6 im Code.

Das ganze habe ich immer als Objekt in einer anderen Methode an das Array übergeben.
Es hängt aber irgendwo habe ich einen Denkfehler wieder einmal.


Java:
Purchase[] cartList = new Purchase[100];
int nächsterIndex = 0;

public void Price()
{
		
		int zähler = 1;
		double price = 0;
		
		for(int i = 0; i < cartList.length; ++i)
		{
			
			if(cartList[i] != null)
			{
				
				if(cartList[i] == cartList[i + 1]) zähler++;
			
				price += cartList[i].Price();
				
			}
			
	
		}
		
		if(zähler%6 == 0)
		{
			
			double singelPrice = price / 6;
			
			price -= singelPrice;
			
		}
		
		System.out.println("Kostet " + price);
	
}

Also der Rabatt wenn ich 6 Stück gleich einkaufe funktioniert dann ist eins kostenlos. Bei 12 zwei usw geht auch. Aber bei 11 sollte ja wenigstens 1 kostenlos sein und das funktioniert nicht. Ja wegen dem zähler, da dieser dann auf 11 ist und so nicht in das if springt weiß aber keine alternative.

Außerdem funktioniert auch nicht die spätere Eingabe also erst 3 mal Milch dann 1 mal Kaffee dann 3 mal wieder Milch. Außerdem sollte er mir den price für die Aktuelle Bestellung anzeigen und nicht insgesamt, aber so dass er immer das eine Produkt insgesammt betrifft damit man den Rabatt sehen kann. Das ganze ist noch nicht ganz fertig und ich muss noch paar verbesserungen vornehmen aber hab den restlichen Code mal im Anhang.

Oh Gott ich weiß nimmer weiter und.....

Bitte um Hilfe!
 

Anhänge

  • Blatt4.zip
    5,9 KB · Aufrufe: 3

InfectedBytes

Top Contributor
mit dem modulo prüfst du ja ob es GENAU 6 bzw 12 sind.
Du musst einfach nur dividieren und kannst dir sogar die if's sparen
Java:
int gratis = zähler / 6;
wenn zähler nun kleiner als 6 ist, kommt 0 raus, wenn er größer gleich 6 und kleiner 12 ist kommt 1 raus, etc.

Musst du das einkaufen so realisieren?
Ich würde es eher so machen, dass ich ein int Array hab, welches mit sagt wieviel ich von welchem produkt gekauft habe.
Also in Array Position 0 steht drin wieviel Kaffee in in Position 1 wieviel Milch, etc.
 

Yurek

Mitglied
Danke für die Antwort werd ich gleich mal probieren mit dem durch 6. Ja das klingt sehr einfach und simpel und bei solchen kleinigkeiten tu ich mir immer schwer.

Zum anderen hast du da bitte eine konkrette Idee? Das was du sagst ist sogar noch besser leider kann ich mir aber gerade nichts direktes vorstellen. Vll mit Mehrdimensionalen Array wo die erste Dimension der Produktname ist und die zweite die Anzahl? Oder jeder Indexposition ein festes Produkt zuweisen und dann immer nach er Anzahl rauf zählen?
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Im Grunde letzteres.
Für sowas sind eigentlich Maps super geeignet, aber die dürft ihr ja leider nicht nutzen^^
Angenommen du hast 3 Produkte, Kaffee, Milch, Sahne.
Dann erzeugst du dir ein int array mit 3 Einträgen.
Index Position 0 ist fest dem Kaffee zugeordnet, 1 der Milch und 2 der Sahne.

Immer wenn dann ein Produkt gekauft wird, zählst du den entsprechenden Eintrag im Array eins hoch.
 

Yurek

Mitglied
Ok danke dir. Ich werd dann auch mal eine Methode schreiben so wie du es gesagt hast. Vorher möchte ich aber nur zum Verstädniss mal das vorherige Porblem lösen und leider funktioniert es immer noch nicht ganz

Der Fehler liegt an der Price Rechnung ich verstehe aber nicht genau was. Bei Menge 5 oder weniger ist alles in Ordnung dann gibt er 5 EUR aus. Bei 6 oder mehr bringt er alles durcheinander :(

Java:
public void Price()
{
		
	int zähler = 1;
	double price = 0;
		
	for(int i = 0; i < cartList.length; ++i)
	{
			
		if(cartList[i] != null)
		{
				
			if(cartList[i] == cartList[i + 1]) zähler++;
				
			int gratis = zähler/6;
				
			price += cartList[i].Price() - (cartList[i].Price() * gratis);
				
		}
		
	}
		
	System.out.println("Kostet " + price);
	
}
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
du machst die preiskorrektur der gratisprodukte innerhalb der schleife, dass heißt, das beim 6,7,8,9.. produkt immer wieder ein produkt mehr als gratis betrachtet wird.
Du musst die gratisprodukte erst nach der schleife berechnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 Ist JVM das gleiche wie IJVM (Bytecode) Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Jsoup: gleiche Session nutzen Java Basics - Anfänger-Themen 0
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
CptK Interface Beide Panels zeigen das Gleiche Java Basics - Anfänger-Themen 2
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
J Methoden Zwei Methoden die fast das gleiche tun organisieren Java Basics - Anfänger-Themen 3
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
K Das Gleiche wiederholen Java Basics - Anfänger-Themen 5
O Klasse in ArrayList speichern Problem -gleiche Speicheradresse Java Basics - Anfänger-Themen 2
M Zwei gleiche Eintraege in ArrayList finden Java Basics - Anfänger-Themen 15
D Javaliste auf gleiche Einträge überprüfen Java Basics - Anfänger-Themen 2
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
M gleiche Box in GUI mehrmals verwenden Java Basics - Anfänger-Themen 5
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
S Dasselbe ist nicht das gleiche? Java Basics - Anfänger-Themen 7
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
B 2D-Array, gleiche Einträge prüfen Java Basics - Anfänger-Themen 5
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
N Threads: 4 Threads, 4mal Zugriff auf Array soll nicht der gleiche Zugriff sein Java Basics - Anfänger-Themen 4
S OOP Warum gleiche Instanz der Klasse? (Factory-Muster) Java Basics - Anfänger-Themen 13
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6
O Zweidemensionales Array auf zwei gleiche Zahlen prüfen Java Basics - Anfänger-Themen 15
D Methode in einer anderen Methode (gleiche Klassse) aufrufen Java Basics - Anfänger-Themen 11
G Der Gleiche oder der Selbe? Java Basics - Anfänger-Themen 6
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
Gama 2 (fast) gleiche Dateien - nur eine funktioniert Java Basics - Anfänger-Themen 2
B Gleiche Ordner löschen Java Basics - Anfänger-Themen 15
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
E Gleiche Methode einer (Kinds?)Klasse erneut aufrufen Java Basics - Anfänger-Themen 2
G gleiche Strings ungleich? Java Basics - Anfänger-Themen 5
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
M bewirken diese Schreibweisen das gleiche? :) Java Basics - Anfänger-Themen 8
F zugriff auf gleiche klasse aus mehreren klassen. Java Basics - Anfänger-Themen 3
G 2 gleiche Strings Java Basics - Anfänger-Themen 2
Z Vector führt mehrer, aber gleiche Elemente Java Basics - Anfänger-Themen 6
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
E Zinsrechnung mithilfe von Arrays Java Basics - Anfänger-Themen 12
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
H Arrays befüllen Java Basics - Anfänger-Themen 43
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
D Arrays Java Basics - Anfänger-Themen 9
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
N Arrays Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
U zwei 2D arrays auf gleich sein überprüfen Java Basics - Anfänger-Themen 14
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben