ich etwas offensichtlich darüber, wie die verschiedenen Scanner Methoden funktionieren nicht fehlen darf, aber das wirklich macht keinen Sinn:Das Entfernen von println mit next() verursacht eine Endlosschleife?
dieser Code eine Endlosschleife verursacht:
Scanner valueScan = new Scanner(line);
valueScan.useDelimiter(",");
while(valueScan.hasNext())
{
count++;
}
während dieser Code gültig ist:
Scanner valueScan = new Scanner(line);
valueScan.useDelimiter(",");
while(valueScan.hasNext())
{
System.out.println("value token: " + valueScan.next());
cellCount++;
}
der von Oracle Dokumentation bin ich nicht sicher, ob es gilt, oder was es bedeutet: „Dieses Verfahren blockieren kann, während eine Eingabe wartet, zu scannen, auch wenn ein vorheriger Aufruf von hasNext() zurückgegeben wahr.“ (http ://machen cs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#next%28%29)
Das macht Sinn, aber ich verstehe einfach nicht, warum das im Methodendetail nicht explizit erwähnt wird? Vielleicht ist es nur ich, aber wenn ich lese "Findet und gibt das nächste vollständige Token von diesem Scanner" klingt es wie eine Accessor-ähnliche Methode und nicht etwas, das irgendwelche Updates macht. – user1086516
@ user1086516: Ah ok. 'hasNext' /' next' ist ein Standard-Java-Idiom für Iteratoren. –