Announcement

Collapse
No announcement yet.

Nur Zahlen erlauben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nur Zahlen erlauben

    Hallo,

    suche eine Java Klasse oder Methode, wo es mir erlaubt,das die Eingabe nur Zahlen ( Integer und Gleitkomme ) angenommen werden.
    Komme oder Punkt soll auch angenommen werden. Z.B. erlaubt ist:
    12,33 oder 12.33 aber auch 232 oder 0,333 oder 0.0232
    Nicht erlaubt ist zum Beispiel 1212E23 oder ,3434 oder .4444 usw.

    Gibt es das in Java?

    Gruss,
    Michael

  • #2
    Servus,

    nachdem du die Eingabe eingelesen hast kannst du dir von dem String ein CharArray (String.toCharArray() oder so) geben lassen und durchläufst dann einfach die einzelnen Stellen anhand des ASCII-Codes. Die Zahlen 0 - 9 haben die Werte 48 - 57 und Komma und Punkt haben die 44 bzw. die 46. Buchstaben liegen 101 - 132 für Grossbuchstaben und 97 - 122 für Kleinbuchstaben.
    Wenn also der ASCII-Wert des Characters höher ist als 57 weist du den String zurück.

    Gruss Stefa

    Comment


    • #3
      Warum nicht einfach Java versuchen lassen die "Zahl" in ein Double/Float umwandeln zu lassen. Java schmeisst schon eine java.lang.NumberFormatException, wenn es keine gültige Zahl war. Also zum Beispiel:
      Float flt = new Float(<DeinZahlString>);
      System.err.println(flt.floatValue); // Hier steht mit Sicherheit eine richtige Zahl

      Comment


      • #4
        Ja, da gibt es was: java.text.DecimalForma

        Comment


        • #5
          Hallo Axel,

          stimmt. Meine Methode wär etwas umständlich. :-) Lag wohl an der Uhrzeit.
          Ich hab solche Probleme an sich auch immer über parseDouble() gemacht und die Fehlerbehandlung im Catchblock.

          Gruss Stefa

          Comment


          • #6
            hi,

            also das mit der exception ist sicher einfach und schnell, aber kein guter stil

            Comment


            • #7
              Was wäre an dieser Stelle denn ien guter stil deiner Meinung nch? :-)

              Gruss Stefa

              Comment


              • #8
                Wenn von der Methode gefordert wird, dass eine Zahl eingegeben wird, sollte der Regelfall ja wohl ohne Fehlerbehandlung auskommen. Das ganze dann in einer Fehlerbehandlung abzufangen, wenn die Anforderung nicht erfüllt wird, ist wohl nur recht und billig

                Comment


                • #9
                  Hallo,

                  am besten machst du aus der zu überprüfende Zahl ein Wrapper-Objekt:

                  Bsp.

                  Integer i = new Integer(123);
                  Float f = new Float(123.123);

                  if(i instanceof Number && f instanceof Number) {
                  System.out.println("i und f sind Zahlen!");
                  } else {
                  System.out.println("i und f sind KEINE Zahlen!");
                  }

                  Die Klasse Integer wrappt -> verpackt ein int-Wert.
                  Die Klasse Float wrappt -> verpackt ein float-Wert.
                  Das Selbe gilt auch für alle andere Primitiven (double, char, u.s.w.)

                  instanceof überprüft ob das zu überprüfende Objekt wirklich dasjenige Objekt ist, welches man erwartet. Wenn es so ist wird true andernfalls false zurückgegeben.

                  Viel Spass beim Auspröbeln! ;-D

                  Comment


                  • #10
                    Originally posted by Axel Leucht View Post
                    Java schmeisst schon eine java.lang.NumberFormatException, wenn es keine gültige Zahl war. Also zum Beispiel:
                    Float flt = new Float(<DeinZahlString>);
                    Er schrieb:
                    Z.B. erlaubt ist:
                    12,33 oder 12.33 aber auch 232 oder 0,333 oder 0.0232
                    Nicht erlaubt ist zum Beispiel 1212E23 oder ,3434 oder .4444 usw.

                    Java aktzeptiert aber klaglos .34 oder -.34 - nicht jedoch 3,4.

                    @Michael: Oktale o. sedezimale Zahlen sollen sicher nicht aktzeptiert werden:
                    077, 0xcafe

                    Comment

                    Working...
                    X