Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen,
ich bin relativ neu bei der Javaprogrammierung.
In der Schleife unten habe ich eine Ausgabe und eine Abbruchbedingung in der if abfrage in der Schleife.
Ich hätte also gern dass die Schleife endet, wenn die Eingabe erreicht wurde.
Die .csv ist so aufgebaut das Artikel[0] die Werte 1, 2, 3 usw. annimmt. Als "EingabeSuche" gebe ich nun "3" ein. Ich möchte also das die Schleife bei 3 endet.
Das passiert nur leider nicht. Sie läuft immer voll durch.
Debuggen hat mir gezeigt, dass es einen Moment gab, in der sowohl Artikel[0] als auch EingabeSuche gleichzeitig auf 3 setzt. In die If-Abfrage wird trotzdem nicht gegangen.
Nein, das != ist schon richtig. So lange eine Zeile gelesen werden kann, wird die Zeile bearbeitet.
Und am Ende der Datei gibt readLine null zurück.
Das Problem ist tatsächlich wie von stg mit seinem Link gesagt der Vergleich von zwei Strings mit ==. Das prüft nur die Referenz aber nicht den Inhalt der Strings und somit ist der Vergleich im if immer falsch.
Was aber beim Code auch auffällt ist die Namensgebung. Variablen bitte mit Kleinbuchstaben starten. Das macht den Code etwas lesbarer. Das ist aber nur eine Kleinigkeit aber ich wollte es kurz erwähnen.
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
www.geeksforgeeks.org
3. Deine Methode macht meiner Meinung nach zu viel und entspricht nicht ganz der Benennung. Versuche lieber eine EVA (https://de.wikipedia.org/wiki/EVA-Prinzip) Vorgehensweise umzusetzen.
4. static smells. Bitte prüfe, ob du dieses static wirklich brauchst.
5. Ich empfehle dir die Verwendung des AutoClosable Interfaces anzugewöhnen.
6. Auch das Einlesen der Datei würde ich auslagern, du könntest dir einen eigenen Reader erstellen, der das Iterator Interface implementiert.
Mit diesen Tips könnte dein Code in etwa so aussehen:
Java:
public Artikel artikelSuchenNachArtikelnummer (String artikelnummer) throws IOException {
try (ArtikelScanner artikelScanner = new ArtikelScanner("Artikel.csv")) { // ArtikelScanner implementiert AutoClosable und Iterator
while (artikelScanner.hasNext()) {
Artikel artikel = artikelScanner.next();
if (artikel.getArtikelnummer().equals(artikelnummer)) {
return artikel;
}
}
}
return null; // falls nicht gefunden
}