web-dev-qa-db-fra.com

Comment vérifier si une chaîne est un entier valide?

J'ai:

 op1 = Integer.parseInt(jTextField1.getText());
 op2 = Integer.parseInt(jTextField2.getText());

Cependant, je veux d'abord vérifier si les valeurs des champs de texte peuvent être assignées à des variables entières. Comment je fais ça?

Cela fait longtemps que je vis cela, alors, si cela a déjà été demandé ici, pardonnez-moi

8
Dannyl

Vous ne pouvez pas utiliser if (int i = 0), car l'affectation renvoie la valeur attribuée (dans ce cas, 0) et if attend une expression dont le résultat est true ou false.

D'autre part, si votre objectif est de vérifier si jTextField.getText() renvoie une valeur numérique pouvant être analysée en int, vous pouvez essayer de procéder à l'analyse syntaxique et si la valeur ne convient pas, NumberFormatException sera généré pour vous informer .

try {
    op1 = Integer.parseInt(jTextField1.getText());
} catch (NumberFormatException e) {
    System.out.println("Wrong number");
    op1 = 0;
}
16
Warlord

Cela fonctionne pour moi. Simplement identifier si une chaîne est une primitive ou un nombre.

private boolean isPrimitive(String value){
        boolean status=true;
        if(value.length()<1)
            return false;
        for(int i = 0;i<value.length();i++){
            char c=value.charAt(i);
            if(Character.isDigit(c) || c=='.'){
                
            }else{
                status=false;
                break;
            }
        }
        return status;
    }

2

parseInt lève une exception NumberFormatException s'il ne peut pas convertir la chaîne en un entier. Vous devriez donc entourer les appels parseInt d'un bloc catch et intercepter cette exception.

1
xp500

Fondamentalement, vous devez décider de vérifier si une chaîne donnée est un entier valide ou vous supposez simplement qu'une chaîne donnée est un entier valide et qu'une exception peut se produire lors de l'analyse.

0
Smutje