Autohaus-Bestellungen

Darkest_Sun

Mitglied
Moin Leute,

Ich habe folgendes Problem. Ich hab eine Datei die ich einlese in denen Bestellungen einzelner Autohäuser sind.
Die Txt sieht so aus:

Autohaus1:3xAudi
Autohaus2:4XMercedes
Autohaus1:3XRenault
Autohaus1:1xAudi
Autohaus1:1xMercedes
usw
usw

d.h. willkürlich einfach Bestellung der Autohäuser

Ich möchte jetzt ein Array erstellen das den Bedarf der Autohäuser zusammenfasst.

Also
BedarfAutohaus1:
Audi 4
Renault 3
Mercedes 1


BedarfAutohaus2:
...

Ich habe einen Code geschrieben. Da funzt das erstellen des Arrays bzw der Array List aber nicht. Kann mir da irgendjemand helfen??

DAnke schonmal



Java:
while(Line.ready()) 
			{	
				String Zeile = Line.readLine();
				ArrayList<CMaterial> BedarfAutohaus = new ArrayList<CMaterial>(); // ArrayList anlegen 
				String[] ZeileGeteilt = Zeile.split(":"); 	// String teilen				
				String[] Bedarf = ZeileGeteilt[1].split("x");	//2. String bei x teilen
				
				
				// Durch jedes Autohaus gehen und ueberpruefen, ob der Name mit dem in der Bestellung uebereinstimmt 
				for (CAutohaus Autohaus : m_Autohaus)
				{
					if (Autohaus.m_Name.contains(ZeileGeteilt[0])) // uebereinstimmung
					{
					
						
					BedarfAutohaus.add(new CMaterial (Bedarf[1], Integer.parseInt(Bedarf[0]))); // Reinschreiben
						
					}
				}
			}
			
			Line.close();
		}
		
		catch (Exception e)
		{
			// Fehlerbehandlung
		}
	}
}
 
Zuletzt bearbeitet von einem Moderator:

Darkest_Sun

Mitglied
Jo schreib ich rein.
Eine Exception tritt allerdings nicht auf. Er läuft ganz normal, sortiert einfach das Array irgendwie falsch.
Also nicht so wie gedacht :(
 
G

Gast2

Gast
Oben schreibst du deine Liste wird nicht gefüllt. Jetzt schreibst du dass die Sortierung nicht passt.
Was denn nun? ;)
 

Darkest_Sun

Mitglied
Ok eben falsch ausgerdrückt. Die Sortierung ist ja vollkommen egal.

Ich möchte einfach nur ein Array bzw die ArrayList haben

BedarfAutohaus1:
Audi 4
Renault 3
Mercedes 1


BedarfAutohaus2:
...
...

D.h. er soll einfach überprüfen ob der Name in der Bestellung mit dem Autohaus übereinstimmt und wenn ja soll er in die ArrayList Bedarf des Autohauses die Bestellung hinzufügen. So das ich aus einer txt mit allen Buntgemischten Bestellungen, eine ArrayList für jedes Autohaus bekommen.

Weißt du was ich mein?
Verzweifel dadran schon seit mehreren Stunden.
Hoffe du/ihr könnt mir helfen:/
 
S

SlaterB

Gast
drei Postings mit belanglosen Blahblah wie wie 'verzweifle, funzt nicht, helfen, gedacht' aber Informationen zum Programm schreibst du kaum welche

bei jedem Schleifendurchlauf erstellst du eine Liste BedarfAutohaus, diese Liste wird aber nicht gemerkt,
in der Schleife in Zeile 10 wird sie vielleicht gefüllt, vielleicht auch nicht, aber was macht das für einen Unterschied?

was soll aus BedarfAutohaus werden, wird das irgendwann irgendwo für eine Ausgabe benutzt, wie sieht dein grundlegendes Konzept aus?
('habe keins' zählt nicht ;) )
 

Darkest_Sun

Mitglied
Also:

Ich habe eine BestellDatei und eine LagerDatei.

Bestelldatei ist eine txt die so aussieht:

Autohaus1:1xAudi
Autohaus2:4xMercedes
...
...

LagerDatei:
Lager1:5xBMW:1xMercedes
Lager2:3xAudi:1xRenault
...
...

Diese beiden Txt möchte ich auslesen.
Die Strings werden also gesplittet bei den ":" und den "x"

ich möchte beim Auslesen der Datei also ArrayListen erstellen. Anschließend möchte ich für jedes Lager einen Lagerbestand ahben und für jedes Autohaus eine Bestellung (zusammengefasst)

Anschließend möchte ich diese Listen dann vergleichen.

z.b. Gucken welches Lager irgendetwas hat was Autohaus 1 braucht.


Hoffe das ist so verständlich?!

das Array/Arrayiste brauch ich auf jedenfall zum weiterarbeiten.
 
S

SlaterB

Gast
Auflistung der Wünsche ist leider keine legitime Frage, verschoben nach Hausaufgaben

ein Tipp: speichere die Listen pro Autohaus in einer weiteren Liste oder gar einer Map falls bekannt,
in jeder Zeile der Datei nicht unbedingt eine neue Liste anlegen, sondern erst schauen ob zum Autohaus eine da ist

mit [c]for (CAutohaus Autohaus : m_Autohaus)[/c] machst du das vielleicht bereits,
poste evtl. mehr Code davon, was ist m_Autohaus eigentlich, wann wird das befüllt usw,
 

ChrisKu

Bekanntes Mitglied
Slater_B hat schon recht, es ist recht schwer, Dein Problem wirklich zu verstehen.

Wenn ich Deinen Code richtig lese, erstelltst Du bei jeder gelesenen Zeile eine neue ArrayList "BedarfAutohaus", da sind Deine in der vorherigen Zeile zu der ArrayList hinzugefügten Daten natürlich weg. Die Deklaration von BedarfAutoHaus muss auf jeden Fall aus der Schleife raus.

Code:
ArrayList<CMaterial> BedarfAutohaus = new ArrayList<CMaterial>(); 
while....{
    //
}
 

Darkest_Sun

Mitglied
Das klingt auf jeden Fall logisch:)

Aber wenn ich es davor ziehe, wird dann nicht nru eine einzige ArrayList erstellt?
und da immer weiter hinzugefügt unabhängig davon um welches Autohaus es geht?

Viele Grüße

Sun
 

Darkest_Sun

Mitglied
Ja auf jedenfall pro Autohaus! Dann hatte ich mich wohl falsch ausgedrückt. Sry.

Genau das ist das Ziel, gleichzeitig gerade auch mein problem ;)

Für jedes Autohaus und für jedes Lager soll jeweils eine ArrayList erstellt werden.
 

ChrisKu

Bekanntes Mitglied
Ja auf jedenfall pro Autohaus!

Ok, dann erstelle doch erstmal ein Map mit einer ArrayList pro Autohaus, z.B so ähnlich

Code:
java.util.Map<String, ArrayList> myMap = new HashMap<String, ArrayList>();
String[] names = new String[]{"Name 1", "Name 2", "Name 3"};
for (String name:names){
      myMap.put(name, new ArrayList());
}

In Deiner while() Schleife holst Du Dir dann die entsprechende ArrayList und fügst Deine Daten hinzu:

Code:
while...
//
ArrayList bedarfAh = myMap.get(zeileGeteil[0]);
bedarfAh.add(...)
//
 

Darkest_Sun

Mitglied
Alles klar:) versteh ich soweit :)

und wo muss ich dann die bedarfAh ArrayListen definieren damit ich auf alle zugreifen kann?


Wenn ich den Code richtig versteh dann holt er sich in der while-SChleife die ArrayListe aus der Map die passend zum Namen ist.

Wirdc durch die While-Schleife jetzt aber nicht jede ArrayList bedarfAh genannt?
d.h. ich hab nachher wieder nur eine Liste?

oder versteh ich das falsch?

Vielen Dank für die Hilfe:)
 

ChrisKu

Bekanntes Mitglied
und wo muss ich dann die bedarfAh ArrayListen definieren damit ich auf alle zugreifen kann?

Vor der while() Schleife

Wenn ich den Code richtig versteh dann holt er sich in der while-SChleife die ArrayListe aus der Map die passend zum Namen ist.

Korrekt, zumindest wenn Du sie richtig benannt hast. ;)

Wirdc durch die While-Schleife jetzt aber nicht jede ArrayList bedarfAh genannt?
d.h. ich hab nachher wieder nur eine Liste?

Nein, da wird nix umbenannt. BedarfAh ist nur ein Verweis auf eine ArrayList in myMap. Und diesen Verweis kannst Du in jedem Schleifendurchlauf ändern, da Du ja über myMap.get(....) wieder an die ArrayList, die Du benötigst, herankommst.
 
Zuletzt bearbeitet:

Darkest_Sun

Mitglied
Ok, heißt also das die ArrayListe gefüllt wird und dann wieder in die Map gespeichert wird? und ich greife dann auf die Map zu später wenn ich die Liste haben will?


Vielen Dank:)

Ich werds versuchen so umzuschreiben:)
 

Neue Themen


Oben