@Spontan: erst lesen, dann posten. Er geht mir "break;" aus der Schleife raus. Nur falls ain Fehler auftritt, geht die Schleife mit "continue;" weiter.
@Topic: Unter Java hab ich diese Art der Eingabe noch nie probiert, hatte aber nen ähnlichen Fehler mal unter C++, was ja zumindest weitgehend Syntaxkompatibel ist. Das Problem war damals dass eben die Eingabe falsch war, der Wert daher nicht in die Variable geschrieben wurde und somit der Eingabepuffer nicht geleert wurde. Beim nächsten Schleifendurchlauf stand die Eingabe immer noch im Puffer und wurde erneut ausgewertet, das Ergebnis kennst du.
Ich würde dir einfach ne andere Eingabelösung vorschlagen: Lies den Wert als String ein und prüf erst nach der Eingabe auf Ganzzahl ab. Geht zum Beispiel mit Methoden wie "isnumeric()" (oder so ähnlich). Das Ganze packst du in deine while-Schleife (oder noch besser repeat) und nimmst diese Prüfung als Abbruchbedingung. Solange keine ganze Zahl eingegeben wurde geht's eben wieder von vorn los.
Durch das Einlesen als String und nachträgliche Prüfung umgehst du das Problem mit dem Eingabepuffer und kommst gleichzeitig von dem "break" und "continue" weg, welches sowieso nur im Notfall oder zur Laufzeitoptimierung angewendet werden sollte.
Gruß,
Chris