Leere Anweisung

H

hüteüberhüte

Gast
Java:
    public static void putMap(Map<String, Object> map, String s) { // + value parameter
        int idx = 0;
        if (s.matches("^\\d+_\\d+$")) {
            int indexOf_ = s.indexOf('_');
            idx = Integer.parseInt(s.substring(indexOf_ + 1));
            s = s.substring(0, indexOf_);
        }
        String sNew;
        while (map.containsKey(sNew = s + "_" + ++idx));
        map.put(sNew, null);
    }

IDE sagt mir Leere Anweisung in Zeile 9!
 
Zuletzt bearbeitet von einem Moderator:
B

bone2

Gast
Code:
while (map.containsKey(sNew = s + "_" + ++idx));
ist tot/endlos, es passiert nie etwas
 
B

bone2

Gast
probiers mal mit
Code:
{ }

du könntset deinen code auch durch
Code:
while(true);
ersetzen.


edit: da ist ein
Code:
;
em ende des
Code:
while
 
Zuletzt bearbeitet von einem Moderator:

Stroker89

Bekanntes Mitglied
Eine While-Schleife sieht normal so aus:

Java:
while(Anweisung){
    Tue etwas
}

deine sieht aber so aus:

Java:
while();

was gar nichts tut.

Hoffentlich bringt das etwas Licht ins Dunkel ;)

Grüße
 

utnovetur

Mitglied
Hallo,

die leere while-Schleife ist so gewollt.
Innerhalb des Aufrufs von containsKey steht eine Zuweisung an sNew.
Offensichtlich soll die Map Schlüssel der Form 123_45 enthalten.
Die Methode generiert einen neuen Schlüssel 123_46 und fügt ihn in die Map ein.

Gruß
 
T

Tomate_Salat

Gast
Nein, denn da hinter dem while ein [c];[/c] steht, ist es eine potentielle Endlosschleife.

Ich zieh es mal auseinander, vllt wird es dann klarer:
Java:
while (map.containsKey(sNew = s + "_" + ++idx))
    ;
map.put(sNew,null);

um es noch weiter zu verdeutlichen:

Java:
while (map.containsKey(sNew = s + "_" + ++idx))
{
}
map.put(sNew,null);

das ist alles das gleiche ;-)

ach und noch so am Rande:
Parameter zu überschreiben ist keine sonderlich gute Idee. Wenn du mit Eclipse arbeitest würde ich dir empfehlen, unter den SaveActions einzustellen, Parameter immer final zu machen.
 
H

hüteüberhüte

Gast
Hallo,

die leere while-Schleife ist so gewollt.
Innerhalb des Aufrufs von containsKey steht eine Zuweisung an sNew.
Offensichtlich soll die Map Schlüssel der Form 123_45 enthalten.
Die Methode generiert einen neuen Schlüssel 123_46 und fügt ihn in die Map ein.

Gruß

Danke, utnovetur!

Diese Methode funktioniert ja, aber Ide sagt mir, daß ich das so nicht machen darf und zeigt mir den Fehler!

Ganz schön fies... :(

Grüßle

Gesendet mit Tapatalk 2
 

xehpuk

Top Contributor
Nein, denn da hinter dem while ein [c];[/c] steht, ist es eine potentielle Endlosschleife.
Och, das passt schon so. Da ist ja die Laufvariable
Code:
idx
dabei. Es wird nur eine Endlosschleife, wenn die Map 2^32 Einträge enthält, wovon ich nicht ausgehen würde.

[OT]
Wenn du mit Eclipse arbeitest würde ich dir empfehlen, unter den SaveActions einzustellen, Parameter immer final zu machen.
Kann ich nicht empfehlen. Hat mir mehrmals den ganzen Code irreversibel zerschossen.[/OT]

Diese Methode funktioniert ja, aber Ide sagt mir, daß ich das so nicht machen darf und zeigt mir den Fehler!
Du kennst schon den Unterschied zwischen Warnung und Fehler?
 
T

Tomate_Salat

Gast
Och, das passt schon so
sobald der Wert nicht als Key enthalten ist, ist es eine Endlosschleife

[OT]
Kann ich nicht empfehlen. Hat mir mehrmals den ganzen Code irreversibel zerschossen.
Dann hast du schonmal einen Fehler gemacht und auf ein SCM verzichtet.
Ansonsten tut es (bei mir über verschieden Eclipseversionen auf mehreren Computern) genau das was es soll. Wenn du Probleme bekommst, dann weil du finale Parameter versuchst zu überschreiben.[/OT]
 
H

hüteüberhüte

Gast
Hihihihi, ja da hast du auch wieder recht, aber ich hab eine etwas umfangreichere Klasse, mit alten Zeugs, was/womit ich abschließen wollte, was aber noch diese gelben .... Warnungen enthält. vlg

Gesendet mit Tapatalk 2
 
S

Spacerat

Gast
Ob die While-Schleife nun tot ist oder nicht, beim Ausdruck "+ ++idx" gehört "++idx" auf jeden Fall in Klammern (zumindest zeigt Eclipse 'nen Fehler, wenn man den Ausdruck in der Bedingung isoliert).
 
Zuletzt bearbeitet von einem Moderator:

dlohd101

Mitglied
Hi,

da die Zeile 9 ganz schön verschachtelt ist, wäre es sinnvoll sie etwas übersichtlicher zu schreiben:

Java:
sNew = s + "_" + idx;
while (map.containsKey(sNew)){
sNew = s + "_" + (++idx);
}

Meine Vermutung ist, dass der Suchstring falsch zusammen gesetzt wird.

Es muss evtl. auch die Integer-Variable "idx" nach String konvertiert werden:

[c] sNew = s + "_" + Integer.toString(++idx); [/c]



Gruß dlohd101
 
Zuletzt bearbeitet:

dlohd101

Mitglied
Stimmt...

Wäre demnach in der Form besser:

Java:
String sNew = s + "_" + idx;
while (map.containsKey(sNew)){
sNew = s + "_" + (idx++);
}

:)

Gruß dlohd101
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Wenn die IDE ein solches Konstrukt tatsächlich als Error - und nicht etwa als Warning - ausgeben sollte, dann würde ich meine Compilereinstellungen anpassen. Meistens ist so was tatsächlich nicht sehr schön, und mit dem Semikolon wohl ein Schreibfehler. Aber ab und an braucht man das ggf. - wär zumindest bei mir nicht das erste Mal.
 
H

hüteüberhüte

Gast
Was heißt denn die Schleife ist tot, und wie soll der Compiler das erkennen, sollte ich irgendwelche Einstellungen verändern oder auf stur schalten? Ich danke euch, für eure hilfe, schon mal...
 
S

Spacerat

Gast
Wenn du nicht auf Warnungen stehst, implementiere es wie's dlohd101 vorgeschlagen hat. Die Schleife ist für den Compiler tot. Er sieht an dieser Stelle nur 'ne While-Schleife mit gültiger Bedingung in der nichts geschieht. Liegt daran, dass der Compiler zu dieser Zeit noch nicht weiss, dass innerhalb der Schleife keine weiteren Anweisungen mehr nötig sind, weil sie bereits zur Bedingung gehören.
 
B

bone2

Gast
hmm, ja mein Fehler. Hab das [c]++[/c] nicht gesehen, jetzt ergibt der Post von xehpuk natürlich viel mehr Sinn. Ich schiebs mal auf Freitag und das "kurz-vor-feierabend-macht-man-die-dümmsten-fehler"-Phänomen :D
Jo bei mir das gleiche, habe auch das ++ übersehen.
Würde das in der tat ähnlich dlohd101's code umsetzen, allerdings ist die zweite lösung falsch, zumindest das ergebnis. das erste idx wird zweimal getestet und am ende ist idx einen wert zu hoch.
 
S

Spacerat

Gast
Jo bei mir das gleiche, habe auch das ++ übersehen.
Würde das in der tat ähnlich dlohd101's code umsetzen, allerdings ist die zweite lösung falsch, zumindest das ergebnis. das erste idx wird zweimal getestet und am ende ist idx einen wert zu hoch.
???:L Ob man's evtl. deswegen alles schlicht in die Bedingung gesetzt hat? Aber BTW.: Es ist (mal wieder) wie bei 'ner for Schleife. Der Schleifenzähler ist hinter der Schleife nicht mehr wichtig. Seine 2. Lösung arbeitet also korrekt.
 
B

bone2

Gast
???:L Ob man's evtl. deswegen alles schlicht in die Bedingung gesetzt hat? Aber BTW.: Es ist (mal wieder) wie bei 'ner for Schleife. Der Schleifenzähler ist hinter der Schleife nicht mehr wichtig. Seine 2. Lösung arbeitet also korrekt.

weil es schlechter lesbar ist, ist alles im schleifenkopf?
aber ja, es wird sNew und nicht idx gesucht, hab ich bei dem Codeschnipsel vergessen.
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
OK! Jetzt ist etwas seltsames passiert, IDE zeigt mir manchmal den Fehler/Warnung und manchmal auch nicht! Ich war absolut inaktiv. Geister, es spukt! :mad:
 
S

Spacerat

Gast
Ist das ein grössers Projekt? Dann ändere mal bissl Quelltext, speichere und achte unten rechts mal auf den Progress (Building workspace...). Solange dauert's bis Fehler und Warnungen in der IDE korrekt angezeigt werden. Anders lässt sich der Spuck erstmal nicht erklären.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
J Datentypen CSV to DB Leere Zellen in CSV mit Inhalt? Java Basics - Anfänger-Themen 11
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
MiMa Leere Datei ist nicht Leer ?? Java Basics - Anfänger-Themen 6
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
A Leere Datei wird ohne Inhalt geschrieben, obwohl Inhalt geschrieben wurde. Java Basics - Anfänger-Themen 4
N CaretListener: leere Textfelder = Button sperren Java Basics - Anfänger-Themen 11
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
X Erste Schritte Java JTable leere Reihen löschen Java Basics - Anfänger-Themen 2
E leere Ausgabe Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M File.ser auf leere checken Java Basics - Anfänger-Themen 17
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
P Leere Arraylist hat size von 1? Java Basics - Anfänger-Themen 3
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
D Wie auf leere Benutzereingabe (int) prüfen? Java Basics - Anfänger-Themen 16
A Leere Fläche einer Tabelle umfärben Java Basics - Anfänger-Themen 3
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
B BufferedWriter - nur leere Datei erstellt Java Basics - Anfänger-Themen 4
G Leere Datei löschen? Java Basics - Anfänger-Themen 3
G leere columns "verstecken" Java Basics - Anfänger-Themen 5
G leere Ordner befinden sich nicht im Zip-Archiv Java Basics - Anfänger-Themen 8
K Leere Stelle im Array finden und ersetzen Java Basics - Anfänger-Themen 10
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
G RegEx für leere IP Adresse? Java Basics - Anfänger-Themen 13
J POI: Leere Excel Zellen Java Basics - Anfänger-Themen 3
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
S Leere Menge von integer Java Basics - Anfänger-Themen 3
R leere Zeichenkonstante? Java Basics - Anfänger-Themen 12
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
T If anweisung Java Basics - Anfänger-Themen 5
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
R Wie würde hier die if-Anweisung aussehen? Java Basics - Anfänger-Themen 18
B break Anweisung Java Basics - Anfänger-Themen 13
C Wie kann ich einen User Input mit einer If-Anweisung verbinden? Java Basics - Anfänger-Themen 5
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
H Cäsar chiffrierung ohne if-Anweisung Java Basics - Anfänger-Themen 5
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
B Erste Schritte if Anweisung mit Wert Übernahme Java Basics - Anfänger-Themen 3
C Anweisung Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
K if Anweisung Java Basics - Anfänger-Themen 3
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert [SQL] SQL als Anweisung mit Spezial-Fall EclipseEclipse Java Basics - Anfänger-Themen 8
J If Anweisung in Schleife einbinden Java Basics - Anfänger-Themen 7
JavaNewbie2.0 Zur Anweisung zurück Java Basics - Anfänger-Themen 13
J Erste Schritte Vorsicht Spaghetti-Code! Wie verschachtel ich meine If-Anweisung??? Java Basics - Anfänger-Themen 4
L if-Anweisung Java Basics - Anfänger-Themen 5
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
Q Variablen If Anweisung, kleiner fehler Java Basics - Anfänger-Themen 8
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
OlafHD String in einer If-Anweisung Vergleichen Java Basics - Anfänger-Themen 2
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
P if anweisung Java Basics - Anfänger-Themen 8
L Frage zur while Anweisung Java Basics - Anfänger-Themen 10
F Return-Anweisung Java Basics - Anfänger-Themen 2
B If-anweisung per ja eingabe. Java Basics - Anfänger-Themen 2
C Variablen if Anweisung falsch gesetzt Java Basics - Anfänger-Themen 4
1 Bei if-Anweisung: Syntax error on token Java Basics - Anfänger-Themen 5
A for-Schleife, if-Anweisung Java Basics - Anfänger-Themen 4
A if - Anweisung Java Basics - Anfänger-Themen 6
R Erste Schritte Schleife erzeugen (mit If Anweisung) Java Basics - Anfänger-Themen 3
P Bei Switch-Anweisung wird default-Anweisung angezeigt Java Basics - Anfänger-Themen 4
M if, else Anweisung Java Basics - Anfänger-Themen 3
O This in switch anweisung Java Basics - Anfänger-Themen 5
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
F Erste Schritte Switch case vs. Verschachtelte If Anweisung Java Basics - Anfänger-Themen 11
M If-Anweisung (Objekt nachdem es gegessen wurde, mehrmals auftauchen lassen) Java Basics - Anfänger-Themen 3
F Fehler in der Swich-Anweisung aber Warum? Java Basics - Anfänger-Themen 4
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
T Problem mit IF-Anweisung. Java Basics - Anfänger-Themen 3
B Erste Schritte Addition von double in switch-Anweisung Java Basics - Anfänger-Themen 2
W return-Anweisung gibt nichts aus Java Basics - Anfänger-Themen 5
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
F Reset in der switch Anweisung Java Basics - Anfänger-Themen 3
V Frage zur IF Anweisung Java Basics - Anfänger-Themen 40
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
D Denkfehler in der If-Anweisung Java Basics - Anfänger-Themen 3
K if anweisung Java Basics - Anfänger-Themen 13
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
S probleme mit der return anweisung Java Basics - Anfänger-Themen 20
K Methoden while Anweisung Java Basics - Anfänger-Themen 81
D Frage zu der import Anweisung in Java Java Basics - Anfänger-Themen 15
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben