String auf zahlenwert prüfen

Dieses Thema String auf zahlenwert prüfen im Forum "Allgemeine Java-Themen" wurde erstellt von Lucaaa, 3. Jan. 2017.

Thema: String auf zahlenwert prüfen Hallo!. ich möchte aus einem Textfeld eine Zahl auslesen. Bis jetzt ist es so, das ich den Textfeldinhalt in einem...

  1. Hallo!.
    ich möchte aus einem Textfeld eine Zahl auslesen. Bis jetzt ist es so, das ich den Textfeldinhalt in einem String gespeichert habe, und der dann in ein Int umgewandelt wird. Das Problem dabei ist aber, dass wenn im Textfeld keine Zahlen stehen, sondern z.B. ein Buchstabe, die Konsole verrückt spielt. Gibt es eine Möglichkeit zu prüfen, ob es eine Zahl ist oder nicht? Oder gibt es spizielle Felder nur für Zahlen?
     
  2. Vielleicht hilft dir das Java-Tutorial weiter. Hier klicken --> (Klick)
  3. Du musst die Umwandlung in ein Try und Catch packen, dann kannst du die Exception, die dabei geworfen wird, entsprechend behandeln :)
    Oder du kannst mittels Regex überprüfen, ob es eine Zahl ist.
    Gibt bestimmt noch mehr Methoden ^^
     
    VfL_Freak gefällt das.
  4. Welches GUI Framework benutzt du? Swing, JavaFx... ?

    In JavaFX gibt es sehr elegante Möglichkeiten das zu realisieren.
     
  5. Moin,

    dazu bedarf es IMHO nicht speziell JavaFX ;)
    Code (Java):

    if( "123".matches("\\d*") )
    {
        System.out.println( "is number" );
    }
    else
    {
        System.out.println( "not a number" );
    }
     
    oder
    Code (Java):

    try
    {
        Integer.parseInt( "12a3" );
        System.out.println( "is number" );
    }
    catch( NumberFormatException ex )
    {
        System.out.println( "not a number" );
    }
     
    oder hier: https://javabeginners.de/String/regular_expressions/Zahlen_erkennen.php
    Ist wohl Geschmackssache ...
    Gruß Klaus
     
  6. Diese Methoden sind zwar unabhängig vom Framework, aber sind doch eher "falsch". Dieses Textfield soll ja explizit nur Zahlen annehmen.
    Deshalb ist die Frage nach dem Framework schon wichtig.
    Mit Swing kann man auch etwas mit "Document" hinbiegen, etwa: http://theunixshell.blogspot.de/2014/04/restricting-java-text-field-to-just.html
     
  7. Auf der Seite, die du geschickt hast, wird genau das gemacht, was Klaus (darf ich das so sagen ? :D) und ich beschrieben haben :D
     
    Zuletzt bearbeitet: 3. Jan. 2017
  8. klar darfst du :cool:

    was sollte daran falsch sein?? :eek:

    Gruß Klaus
     
  9. Natürlich, aber eben so gesehen löst ihr ein Problem, welches auftritt. Meine Variante bzw. die im verlinkten Beitrag benutzt ein Document. Dort wird das Problem nicht "behandelt" sondern es wird verhindert.
     
  10. Natürlich nicht falsch, sondern "falsch" ;) mit Anführungszeichen. Man sollte doch verhindern, dass man Buchstaben im Textfield eingeben kann, damit das "sauber" aussieht. Eure Lösung ist natürlich richtig, wenn es drum geht ein Teilproblem zu lösen, aber in diesem Kontext reicht es meiner Meinung nicht aus.
     
  11. ok, so gesehen hast Du vlt. Recht, aber ob ein Anfänger nicht mit einem Document etwas überfordert ist ???
    Dann würde ich noch eher ein FormattedTextField vorschlagen :)
    http://www.java-forum.org/thema/jtextfield-darf-nur-zahlen-annehmen.83493/

    Gruß Klaus
     
    JCODA gefällt das.
  12. Also das ganze sieht jetzt so aus (Code) aber funktionieren tut es immer noch nicht
    Code (Java):


     private  void verschlüsseln() {
       String textinput = textfield.getText();
      String anzahlStellen = textfield3.getText();
         int offset = Integer.parseInt(anzahlStellen);
         
         try
         {
         Integer.parseInt(anzahlStellen);
         if (offset >=1){
        char[] meinArray = textinput.toCharArray();
       char[] meinNeuesArray = verschluesseln(offset%128, meinArray);
       String output = String.valueOf(meinNeuesArray);
       textfield2.setText(output);
       
       }
         }
         catch( NumberFormatException ex )
         {
            textfield.setText("");
            textfield2.setText("");
            textfield3.setText("ERR");
         }
         
     
     
  13. Das sieht alles noch ein wenig wirr aus :D
    Du parst "anzahlStellen" vor dem try -Block!
    Und dann nochmal drinnen, ohne das du dem geparsten Beachtung schenkst.
     
  14. Hab jetzt mit einem FormattedTextField gemacht. Jetzt gibt es gleich 2 Probleme.
    1. Kann ich die erste Zahl die ich in das Feld schreibe nicht mehr löschen.
    2. lässt sich das Textfeld auch nicht mehr leeren. hab schon folgendes versucht.
    Code (Java):

    textfield3.setText("");
     
    und
    Code (Java):

    textfield3.setText(null);
     
    Beides ohne Erfolg
     
  15. Schau dir jetzt hier den Kurs an und lernen Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)