Apprenez étape par étape 5 façons de déterminer si une chaîne est un nombre en Java

Méthode 1 : utilisez la propre fonction JAVA
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i )) )(
return false;
}
}
return true;
}

La méthode 1 parcourt chaque caractère de la chaîne et utilise la fonction Character.isDigit() pour vérifier si chaque caractère est un nombre. Si tous les caractères de la chaîne sont des nombres, cette méthode renverra true . Cependant, si la chaîne contient des caractères non numériques, elle renverra immédiatement false .

Cette approche est soignée et ordonnée, mais peut être trop stricte car elle considère qu'une chaîne comme "123" (qui contient un espace à la fin) n'est pas un nombre.

 

Méthode 2 :
/*
* Déterminer s'il s'agit d'un entier

* @param str La chaîne passée
* @return est un entier et renvoie vrai, sinon elle renvoie faux
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern. compile("^ [-\+]?[\d]*$");
return pattern.matcher(str).matches();
}

La méthode 2 utilise des expressions régulières pour vérifier si la chaîne contient uniquement des nombres. Il correspond à toutes les chaînes commençant par l'expression régulière ["^[-+]?[\d]*$"] . Cette expression régulière signifie que le début de la chaîne peut être un signe positif ou négatif, suivi d'un nombre quelconque de nombres. . Cependant, il pense qu'une chaîne comme "123" est un entier, alors qu'en fait "" ne fait pas partie d'un nombre.

 

Troisième méthode : FuncGPT (fonction Hui) génère automatiquement
le package com.feisuanyz.function ;

importer com.feisuanyz.flow.core.cmpt.annotation.function.MethodDesc ;

importer com.feisuanyz.flow.core.cmpt.annotation.function.ParamDesc ;

 

classe publique StringNumberChecker {

   

@MethodDesc (desc = " Déterminer si la chaîne est un nombre " ,

paramètres = {

@ ParamDesc (name = "str" ​​, desc = " Chaîne à juger " ),

})

public static boolean isNumeric ( String str ) {

        if (str == null || str . isEmpty ()) { // Vérifiez si la chaîne est vide

            retourner faux ;

        }

 

        essayez {

            Double .parseDouble (str); // Utilisez la méthode Double.parseDouble() pour essayer de convertir la chaîne en double

            return true ; // Conversion réussie, la chaîne est un nombre

        } catch ( NumberFormatException e ) {

            return false ; // La conversion a échoué, la chaîne n'est pas un nombre

        }

    }

}

La troisième méthode utilise la méthode Double.parseDouble() pour tenter de convertir la chaîne en un nombre à virgule flottante double précision. Si la conversion réussit, cela signifie que la chaîne est un nombre et true est renvoyé ; si la conversion échoue, cela signifie que la chaîne n'est pas un nombre et false est renvoyé.

Cet extrait de code inclut une annotation @MethodDesc, qui est utilisée pour décrire certaines informations sur cette méthode, notamment sa description (desc) et ses paramètres (params). La description du paramètre est également un tableau, où chaque élément a un nom (name) et une description (desc). Ce type d'annotation est généralement utilisé pour générer de la documentation API ou pour la fonction d'invite de code de certains IDE.

L'idée de conception de cette méthode numérique est raisonnable et peut répondre aux besoins de la plupart des scénarios. Cependant, il est important de noter que puisque la méthode Double.parseDouble() peut analyser une chaîne telle que « 3.14 » en un nombre à virgule flottante valide, elle peut être définie de manière assez vague comme un « nombre » au sens strict. Si vous avez besoin d'une définition plus précise (par exemple, n'accepter que des valeurs entières ou uniquement des nombres à virgule flottante avec un nombre spécifique de décimales), vous devrez peut-être personnaliser une méthode plus complexe pour vérifier la chaîne.

Dans l’ensemble, il s’agit d’un moyen simple et clair de vérifier efficacement si une chaîne peut être analysée comme un nombre.

 

Remarque :
public final static boolean isNumeric(String s) {
if (s != null && !"".equals(s.trim()))
return s.matches("^[0-9]*$");
sinon,
retourne faux ;
}

La méthode 4 vérifie d'abord si la chaîne est vide ou ne contient que des espaces, et renvoie false si la condition est remplie . Ensuite, il utilise la méthode matches() de String pour vérifier si la chaîne correspond à l'expression régulière "^[0-9]*$" . Cette expression régulière signifie que la chaîne se compose uniquement de nombres 0-9 . Cette méthode prend en compte les chaînes vides et les espaces, mais traitera toujours les chaînes comme "123" comme des nombres lorsqu'elles seront rencontrées.


Nom : asciipublic
static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
renvoie false ;
}
renvoie vrai ;
}

Cette méthode détermine s'il s'agit d'un nombre en vérifiant le code ASCII de chaque caractère de la chaîne. Si le code ASCII du caractère n'est pas compris entre 48 ( '0' ) et 57 ( '9' ), il renvoie immédiatement false . Cette méthode est très concise, mais aussi très stricte, et considérera qu'une chaîne comme "123" n'est pas un nombre, même si " " fait partie d'un nombre.

 

En résumé, chacune de ces méthodes a ses avantages et ses inconvénients, et la méthode que vous choisissez dépend de vos besoins spécifiques et de votre définition des « nombres » .

 

FuncGPT est la dernière fonctionnalité lancée par le robot logiciel SoFlu , un outil de développement automatique complet . Il se concentre sur les fonctions Java générées par l'IA , décrit les exigences des fonctions Java en langage naturel et génère des codes de fonction Java de haute qualité et hautement lisibles en temps réel. Le code généré peut être directement copié dans IDEA ou importé dans la bibliothèque de fonctions de l'outil de développement entièrement automatique Java en un seul clic. Maintenant disponible pour développement et utilisation gratuits, lien :https://suo.im/aWkTE

Amende de 200 yuans et plus d'un million de yuans confisqués You Yuxi : L'importance des documents chinois de haute qualité Le serveur de migration hard-core de Musk Solon pour JDK 21, les fils virtuels sont incroyables ! ! ! Le contrôle de la congestion TCP sauve Internet Flutter pour OpenHarmony est là La période LTS du noyau Linux sera restaurée de 6 ans à 2 ans Go 1.22 corrigera l'erreur de variable de boucle for Google fête son 25e anniversaire Svelte a construit une "nouvelle roue" - runes
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4868096/blog/10112537
conseillé
Classement