![]() |
[Java] Endlos-Schleife, aber wieso?
Hi!
Ich moechte eine Abfrage machen, ob ein String Integer ist, bevor ich ihn parse, um Fehler zu vermeiden. Ich mache das wie folgt:
Code:
Dummerweise kaeme jetzt eine Endlos-Schleife, denn auch wenn ich Ziffern von 0..9 eigebe, werde ich erneut aufgefordert, die Nummer einzugeben und ich habe keinen Plan, wo der Fehler ist.
public class KontoEingabeUI {
private Konto konto; public KontoEingabeUI(Konto konto) { this.konto = konto; } public Konto eingeben() { String knummer; String stringblz; int kontoNummer=0; int blz=0; ...; do { System.out.print("Nummer: "); knummer = in.nextLine(); if (isInteger(knummer) ) { kontoNummer = Integer.parseInt(knummer); } } while (isInteger(knummer)==false); do { System.out.print("Bankleitzahl: "); stringblz = in.nextLine(); if (isInteger(stringblz)) { blz = Integer.parseInt(stringblz); } } while (isInteger(stringblz)==false); ... } private boolean isInteger(String integ) { boolean b=true; boolean bool[]= new boolean[integ.length()]; for (int i=0; i<integ.length();i++) { bool[i]=false; for (int j=0;j<10;j++) { if (integ.charAt(i)==j) { bool[i]=true; } } } for (int i=0;i<integ.length();i++){ if (bool[i]==false){ b=false; } } return b; } } Danke schon mal an alle, die Licht ins Dunkel bringen! [edit=alcaeus]Delphi-Tags durch code-Tags ersetzt. Mfg, alcaeus[/edit] |
Re: [Java] Endlos-Schleife, aber wieso?
Hi,
dein Fehler liegt in dieser Schleife:
Code:
Du fragst ab, ob dein Zeichen zwischen UNICODE 0 und 9 liegt. Die Ziffern 0 bis 9 haben aber die Codes 48 bis 57.
for (int j=0;j<10;j++) {
if (integ.charAt(i)==j) { bool[i]=true; } } Eigentlich kannst du dir die Prüfung aber auch sparen und einfach die entsprechende Exception abfangen :wink: Grüße, Niko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz