Break funktioniert nicht so wie es soll

Discordia

Mitglied
Ich arbeite zur Zeit an einem Spaßprojekt, ich versuche ein kleines csv Verarbeitungsprogramm zu schreiben. Zur Zeit hänge ich aber an einer Methode die nicht funktioniert. Sie soll aus einer Textdatei zeilenweise auslesen und diese Strings in eine ArrayList<String> schreiben. Mein Problem liegt jetzt an der Stelle, dass ich ab Zeile 24 keine While Schleife benutzen kann wenn ich prüfen möchte ob eine Zeile in der Datei leer ist. readLine(); springt schon in die nächste Zeile und wenn ich prüfe springt er schon und danach kann ich die nicht mehr speichern. Deswegen hab ich das jetzt mit dem Block 23-30 versucht umzusetzen. Aber hier wird das break einfach missachtet :( Benutz ich das einfach falsch? Ich weiß is so ähnlich wie ein goto aber ich hab keine ahnung wie ich das anders realisieren soll. Würde mich über Hilfe wirklich freuen auch über Hinweise wie ich das Problem besser lösen kann. Vll ist mein ansatz ja schon komplett falsch.

Java:
import java.io.*;
import java.util.*;

public class CsvHandler {
  
  private String dateiname;
  private List<String> liste;
  
  public CsvHandler(String dateiname) {
    
    this.dateiname = dateiname;
    this.liste = new ArrayList<String>();
    
  }
  
  public void lesen() throws IOException {
    BufferedReader leseBereich = null;
    
    try { 
      leseBereich = new BufferedReader(new FileReader(this.dateiname));
      liste.clear();
      
      nochmal:
      {
        String a = leseBereich.readLine();
        if (a != null) {
           liste.add(a);
          break nochmal;     
        }  
      }  
      leseBereich.close();
    } catch(Exception e) {
      System.out.println("Auslesefehler!");
    }
  }
}
 

Landei

Top Contributor
[c]break[/c] ist kein [c]goto[/c], du kannst damit genau an eine Stelle springen, und zwar hinter eine Schleife (wenn kein Label angegeben ist, hinter die direkt umschließende, ansonsten hinter die [mittelbar umschließende] Schleife, vor der das Label steht).

In deinem Fall kannst du den gewünschten Effekt durch eine normale Schleife erreichen:

Java:
for(String a = leseBereich.readLine(); a != null; a = leseBereich.readLine())
   liste.add(a);
}
 
Zuletzt bearbeitet:

Sephrox

Mitglied
Die Realisierung würde ich so machen:

Java:
try { 
      leseBereich = new BufferedReader(new FileReader(this.dateiname));
      liste.clear();
      
      String a = leseBereich.readLine();
      
        while(a!=null) {
           liste.add(a);
           a = leseBereich.readLine();    
        }  
       
      leseBereich.close();
    } catch(Exception e) {
      System.out.println("Auslesefehler!");
    }

Es können Fehler enthalten sein. Habe es nicht getestet und habe gerade keine Javaumgebung zur Verfügung.
 

Discordia

Mitglied
Ok aber wie soll ich eine while Schleife konstruieren? Ich hab es so probiert:

Java:
while (leseBereich.readLine()!=null) {
   String a = leseBereich.readLine();
   liste.add(a);   
}

Aber dabei ist das Problem, dass ich schon in der Bedingungsprüfung der while schleife den String abgreifen müsste, da die Methode readLine immer die nächste Zeile zurück gibt und sobald ich sie zweimal ausführe verlier ich eine Zeile.

NACHTRAG: Probier grade noch Sephrox Hinweis aus.

NACHTRAG 2: Danke Sephrox genau so muss es aussehen. Habs irgendendwie noch nicht so raus mit der Herangehensweise bzw. Denkensart. Danke auch Landei für deine Erklärung des break war mir noch nicht so bewusst und auch für deinen Quellcode.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Ich persönlich finde [c]for[/c] aus zwei Gründen besser:
- Die einzelnen Elemente der Schleife müssen explizit angegeben werden, ich kann also z.B. nicht vergessen, einen Index hochzuzählen oder so
- Die Schleifenvariable (hier a) ist nur im Schleifenkörper sichtbar, man kann also nicht versehentlich nach der Schleife irgend etwas Dummes damit machen
 

Sephrox

Mitglied
Hey Landel,

ja ist in manchen Situationen besser aber in z.B. Serverprogrammierung Whilest du ja die ganze Zeit bis ein Wert "reinkommt".
Daher bin ich daran gewöhnt.

@Topic
Du darfst natürlich wie du selbst schon bemerkt hast kein readLine in der While machen , weil dieser ja schon ausgelesen wird und somist bei der abfrage auf !=null verworfen wird. Deshalb habe ich es so geschrieben:

String a = readLine();

So überprüfst du ja nur den String a in der While Schleife... das gelesene bleibt gespeichert und verschwindet somit nicht und dann kannst du mit dem String arbeiten ... ihn speichern oder bearbeiten :)
 

Noctarius

Top Contributor
Wenn ich Label-Breaks sehe wird mir immer so grün im Gesicht. Vergiss bitte GANZ GANZ GANZ schnell, dass es einen Käse wie Goto in Java gibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Switch / Case Problem, break funktioniert nicht! Java Basics - Anfänger-Themen 3
B break Anweisung Java Basics - Anfänger-Themen 13
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
D Break Sprungmarken Problem einer While True in While True Java Basics - Anfänger-Themen 6
T Break Continue Java Basics - Anfänger-Themen 4
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
A break mit Sprungmarken Java Basics - Anfänger-Themen 41
I Erste Schritte while anstatt for, if und break Java Basics - Anfänger-Themen 10
B Break, Continue und Assert Java Basics - Anfänger-Themen 5
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
S Break in dem Zusammenhang "legitim"? Java Basics - Anfänger-Themen 4
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A mit break if beenden Java Basics - Anfänger-Themen 6
P for Schleife mit break, verstehe die Ausgabe nicht Java Basics - Anfänger-Themen 6
H break/continue in einer if-Abfrage? Java Basics - Anfänger-Themen 15
G continue und break Java Basics - Anfänger-Themen 1
S break Label als Spungmarken vorher definieren Java Basics - Anfänger-Themen 4
G Probleme mit break hier; in if-Bedingung Java Basics - Anfänger-Themen 5
T String: NeueZeile (" ") , Break etc. abfangen Java Basics - Anfänger-Themen 2
I Frage zur Ausgabe do while mit break Java Basics - Anfänger-Themen 2
G break? Java Basics - Anfänger-Themen 2
S break & continue: sprungmarken Java Basics - Anfänger-Themen 10
H Schleifen: break Java Basics - Anfänger-Themen 7
T Gültigkeit von break Java Basics - Anfänger-Themen 5
F Methode abbrechen wie mit break in Schleifen ? Java Basics - Anfänger-Themen 2
H break anweisung Java Basics - Anfänger-Themen 4
G break out; funzt nicht Java Basics - Anfänger-Themen 7
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben