Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Java] Endlos-Schleife, aber wieso? (https://www.delphipraxis.net/47240-%5Bjava%5D-endlos-schleife-aber-wieso.html)

kasimir 8. Jun 2005 09:36


[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:
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;
    }

}
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.
Danke schon mal an alle, die Licht ins Dunkel bringen!

[edit=alcaeus]Delphi-Tags durch code-Tags ersetzt. Mfg, alcaeus[/edit]

Niko 9. Jun 2005 22:51

Re: [Java] Endlos-Schleife, aber wieso?
 
Hi,

dein Fehler liegt in dieser Schleife:
Code:
for (int j=0;j<10;j++) { 
         if (integ.charAt(i)==j) { 
            bool[i]=true;
         } 
      }
Du fragst ab, ob dein Zeichen zwischen UNICODE 0 und 9 liegt. Die Ziffern 0 bis 9 haben aber die Codes 48 bis 57.

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 08:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz