Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Effettivamente esiste il problema del CUT & PASTE...

    Risolvibile tornando alla prima soluzione di abcd1000 e sostituendo il controllo del numero con questo:
    codice:
    private boolean testCarattere(char c) {
       return Character.isDigit(c) || (c == ',');  // O il '.' se preferisci i decimali col punto.
    }
    ...
    
    boolean controllo = true;
    String str = miaTextField.getText();
    for (int i=0; i<str.length(); i++){
       controllo = controllo && testCarattere(str.charAt(i));
    }
    
    // In controllo hai true se la stringa è un numero
    PS: Attenzione che puoi avere anche numeri negativi, quindi il segno meno all'inizio va controllato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #12
    Originariamente inviato da unomichisiada
    codice:
    import java.awt.FlowLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
    
    public class OnlyNumbersTextField extends JTextField
    {
    
        /**
         * 
         */
        private static final long serialVersionUID = 8554350982699149972L;
    
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            JFrame frame = new JFrame();
            frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.getContentPane().setLayout(new FlowLayout());
            frame.getContentPane().add(new OnlyNumbersTextField(10));
            frame.pack();
            frame.setVisible(true);
        }
    
        /*
         * Costruttore con unico parametro il limite della textfield
         */
        public OnlyNumbersTextField(int cols)
        {
            super(cols);
            setDocument(new TextLimitDocument());
        }
    
        /***************************************************************************
         * Classe interna per la gestione dell'input
         **************************************************************************/
        private class TextLimitDocument extends PlainDocument
        {
            /**
             * 
             */
            private static final long serialVersionUID = 5408078764971166982L;
    
            /*
             * Funzione per l'inserimento della stringa nella textfield
             */
            public void insertString(int offset, String str, AttributeSet attr)
                    throws BadLocationException
            {
                boolean invalid = false;
    
                if (str == null)
                    return;
    
                if (!str.matches("[0-9]*"))
                    return;
    
                super.insertString(offset, str, attr);
    
            }
        }
    
    }
    E se volessi modificare questa in modo che accettasse solo caratteri al posto dei numeri? (sia maiuscoli, sia minuscoli che gli spazi) :master:

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  3. #13
    Originariamente inviato da LeleFT
    PS: Attenzione che puoi avere anche numeri negativi, quindi il segno meno all'inizio va controllato.


    Ciao.
    Beh per questo bisogna vedere cosa intende lui,se a lui interessa l'inserimento di caratteri numerici (come ha detto nel suo primo post) allora va bene anche la mia,certo se a lui interessa poter inserire anche numeri negativi e magari il punto decimale,il separatore decimale,la e dei numeri informato mantissa + esponente e chi più ne ha più ne metta ,allora è un'altro paio di maniche e la classe va quantomeno rivista .Ce lo deve dire lui cosa vuole (e magari non sarebbe male se provasse a buttar giù una soluzione pure lui).
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #14
    Originariamente inviato da Matteo982
    E se volessi modificare questa in modo che accettasse solo caratteri al posto dei numeri? (sia maiuscoli, sia minuscoli che gli spazi) :master:

    Ciao.
    Ti basta solo cambiare opportunamente l'espressione regolare .Studiatele, trovi un riferimento nella documentazione della classe String.Ci puoi fare praticamente quello che vuoi.
    [OT]
    Recentemente mi è capitato di dover tradurre un piccolo script in perl aiutandomi con un tutorial sul linguaggio(che fa un uso veramente pesante di espressioni regolari), vi assicuro ha una una potenza incredibile da questo punto di vista, mi ha veramente sorpreso.
    [/OT]
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #15
    Ok sono andato a vedere come hai detto nella classe String e in effetti è una grande cosa! Comunque per informazione di chi avrà bisogno in futuro basta mettere questo "[a-zA-Z\\s]*".

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  6. #16
    Originariamente inviato da Matteo982
    String e in effetti è una grande cosa!
    Mi riferivo al Perl. E' più potente di java nel manipolare testo perchè usa le backreferences.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #17
    Originariamente inviato da unomichisiada
    Ti basta solo cambiare opportunamente l'espressione regolare .Studiatele, trovi un riferimento nella documentazione della classe String.Ci puoi fare praticamente quello che vuoi.
    Io mi riferivo alle espressioni regolari!!

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.