länge eines Integer

  • Hallo zusammen!!
    habe ein Problem muss bei einen Programm die länge eines Intergers überprüfen mit den befehlen length charAt und isdigit. Da ich nicht sooo viel ahnung von java habe bekomme ich absoulut nicht hin bitte helft mir!!!!

    Ich muss überprüfen ob die identnummer immer genau 6 stellen hat!!!

    Danke schon mal im vorraus

    bin echt verzweifelt

  • Wenn die Zahl positiv sein muss, würde ich eher eine Abfrage machen mit

    Code
    if(99999<zahl<1000000)


    Wenn auch negative Zahlen erlaubt sind, entsprechend andere Abfrage. Aber einen String machen und dessen Länge bestimmen finde ich persönlich etwas seltsam.

  • Zitat von gelbasack

    Wenn auch negative Zahlen erlaubt sind, entsprechend andere Abfrage. Aber einen String machen und dessen Länge bestimmen finde ich persönlich etwas seltsam.


    Eine reine Integer-basierte Abfrage ist auf jeden Fall komplizierter. Wenn die String-Lösung einen rasch ans Ziel bring spricht nichts dagegen - denke ich.

  • Zitat von gelbasack

    Wenn die Zahl positiv sein muss, würde ich eher eine Abfrage machen mit

    Code
    if(99999<zahl<1000000)


    Wenn auch negative Zahlen erlaubt sind, entsprechend andere Abfrage. Aber einen String machen und dessen Länge bestimmen finde ich persönlich etwas seltsam.


    interressante überlegung. Ich würde aber die string methode vorziehen, aus folgendem grund:


    wenn du mir eine zahl gibst und mich fragst, ob die genau sechs stellen hat, dann würde ich nicht überlegen, zwischen welchen zwei zahlen sie stehen muss, damit sie 6 stellen hat.


    Ich würde stattdessen einfach die ziffern abzählen, sprich die zahl als eine kette von zeichen betrachten. Also genau dasselbe, als wenn du mir statt einer zahl eine reihe von buchstaben gibst und mich da nach den stellen fragst.


    ein string ist ja (logisch betrachtet) nichts weiter als eine liste von zeichen. Also ist die konvertierung in String eigentlich genau das, was man selbst instinktiv machen würde.


    Code
    123456.to_s.length == 6
  • Zitat von gelbasack

    String.valueOf(-12345).length()==6 - müsste man also den ersten Char abfragen... einigen wir uns auf Geschmackssache? ;)


    dann nehm ich halt den absolutwert:

    Code
    -123456.abs.to_s.length == 6


    ;)


    mein argument ist ja auch gar nicht so der aufwand der abfrage, sondern die öffensichtlichste lösung zu finden. Ich denke, die stringkonvertierung ist der direktere weg zum ziel, zumindest wenn nach der anzahl der stellen gefragt wird.


    Wenn wir statt einer id z.b einen geldbetrag hätten, der zwischen 99999 und 1000000 euro liegen muss, dann würd ich das auch so wie du abprüfen.

  • HI zusammen habe noch nen Problem wenn ich das ding in nen Strin umwandel weiß der aber nicht ob ich 6 zaheln eingegeben habe sonderen prüft nur die länge des strings und wenn uchstaben drin sind ist es immer noch OK!!




    kurz er sol noch überprüfen ob das alles zahlen sind

  • Also wenn du eine zahl in einen string umgewandelt hast, kannst du dir wohl sicher sein, das da auch nur zahlen drinnen steht :)


    wenn du einen string hast und wissen willst, ob da nur ziffern drinnen stehen, kannst du das mit java.lang.Integer.valueOf(java.lang.String) erreichen prüfen (es wird eine exception geworfen wenn das konvertieren schiefgeht, und die kannst du abfangen).


    Ich würde hier aber zwei fliegen mit einer klappe schlagen und eine regular expression in der form /^[0-9]{6}$/ verwenden. Die stellt sicher, dass es zahlen sind und zwar genau sechs.

  • Dafür hast du isDigit() (meiner Meinung nach gibt es schönere Wege, aber die Funktion solltest du ja verwenden)
    Ich würde also eine Schleife machen, die bis zur Länge vom String zählt und immer deinString.charAt(i).isDigit() aufruft.

  • int i=0; // zum Zählen
    String zahl="123456";
    boolean error=false;
    for(i=0; i<zahl.length(); i++){
    if(!Character.isDigit(zahl.charAt(i))) error=true;
    break;
    }
    if(error) ... ;//deine Fehlerbehandlung
    else ... //weiter hier


    So ca.
    charAt(i).isDigit() war vorhin falsch angeschrieben. isDigit() findest du in der API unter Character. charAt(int i) ist eine Methode von String.

  • hier mal alle drei wege im vergleich:


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!