Endlosschleife

  • Themenstarter Themenstarter tinytoon
  • Beginndatum Beginndatum
T

tinytoon

Gast
Hallo Miteinander,

ich lese Daten aus einer csv-Datei, filtere sie und speichere sie in einer List. Das klappt auch ganz gut, aber hier komme ich in eine Endlosschleife und weiss nicht warum. Die if-Bedingung wird nur das erste mal erfüllt, danach Endlosschleife und System.out.println() liefert immer den selben Wert.

Java:
String[] daten = rows[i].replace("\"", "").split(";");
        		
        		DatenContainer dc = new DatenContainer();
        		
        		for(int j=0; j<daten.length; j++)
        		{
        			if(!daten[0].equals("No Id") && !daten[6].equals("0,00")){
        				
        				dc.setDate(new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").parse(daten[2]));
        				dc.setSales_pc(daten[7]);
        				dc.setSales_pi(daten[8]);

        				System.out.println(daten[5]);
        			}
                        }
                }

Vielen Dank vorab.
 
>System.out.println() liefert immer den selben Wert.
> System.out.println(daten[5]);

jo das 5te element.

aber endlos sollte sie nicht laufen.

EDIT:
bzw. das 6te Element...beginnt ja bei 0
 
Zuletzt bearbeitet:
vllt noch die äußere schleife zeigen. den sinn von der inneren verstehe ich eh nicht ganz. die kannst du dir imho sparen, wenn du statisch auf das array gehts
 
Die obere Schleife habe ich vergessen euch zeigen. Kann jetzt jemand sagen, warum ich da in eine Endlosschleife komme? Wie kann man das mit einer foreach schleife lösen?
Java:
String [] rows = s.split("\n");
     
        for(String[] rows: )
        	
        for(int i=0; i<rows.length; i++) {
        	if (i>6)
        	{

                String[] daten = rows[i].replace("\"", "").split(";");
                
                DatenContainer dc = new DatenContainer();
                
                for(int j=0; j<daten.length; j++)
                {
                    if(!daten[0].equals("No Id") && !daten[6].equals("0,00")){
                        
                        dc.setDate(new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").parse(daten[2]));
                        dc.setSales_pc(daten[7]);
                        dc.setSales_pi(daten[8]);
 
                        System.out.println(daten[5]);
                    }
                        }
                }
 
Zuletzt bearbeitet von einem Moderator:
wäre schön, wenn der code kompilierbar ist. wenn du erst ab zeile 6 iterieren willst, macht eine foreach eh keinen sinn aber dann würde ich auch die for richtig intialisieren.
ansonsten ist die innere, wie gesagt überflüssig:

Probiers mal so:
Java:
		String [] rows = s.split("\n");
		for(int i = 7; i < rows.length; i++) {
			String[] daten = rows[i].replace("\"", "").split(";");
			DatenContainer dc = new DatenContainer();
			if(daten.length >= 9 && !daten[0].equals("No Id") && !daten[6].equals("0,00")){
				dc.setDate(new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").parse(daten[2]));
				dc.setSales_pc(daten[7]);
				dc.setSales_pi(daten[8]);
				System.out.println(daten[5]);
			}
		}

aber eine endlosschleife war bei deinem ursprungscode auch nicht zu finden. vllt ist die csv-datei einfach etwas größer??

edti: achja. ich halte es auch nicht für gut auf qualifier mit
Code:
replace("\"", "")
zu scheissen. die haben schon ihre Daseinsberechtigung.
 
DA wirst du in überhaupt keine Schleife kommen, weil es syntaktisch falsch ist und nicht kompilieren wird.
Vllt sagst du einfach mal was genau du machen willst.

Ich lese eine csv ein, parse diese nach ";" und möchte im nächsten Schritt Daten filtern (mit der Bedingung s. if(...)) und in eine List speichern. Dabei muss Zeile für Zeile durchgegangen werden und schauen, dass die if-Bedingung erfüllt wird.

Wie kann man mein Beispiel mit einer foreach-Schleife lösen? Das sollte doch kürzer sein und eine der Schleife überflüssig machen, oder?
 
Die for-Schleife in Zeile 13 macht keinen Sinn bzw. ist überflüssig.

habe ich ihm auch schon 2x gesagt aber ich bezweifle mittlerweile, dass er die posts hier auch richtig liest :rtfm:

@to: aber auch bei obigen code solltest du den datencontainer pro iteration noch in irgendeine liste packen oder sonst was damit machen. sonst ist das komplette schleifenkonstrukt abgesehn von der einen ausgabe überflüssig
 

Neue Themen


Zurück
Oben