Résumé des méthodes Java pour déterminer si une variable est un nombre
java判断变量是不是数字方法:(相关视频课程推荐:java视频教程)
1、用JAVA自带的函数
public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; }
2、用正则表达式
首先要import java.util.regex.Pattern 和 java.util.regex.Matcher
public boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ){ return false; } return true; }
3、使用org.apache.commons.lang
org.apache.commons.lang.StringUtils; boolean isNunicodeDigits=StringUtils.isNumeric("aaa123456789"); http://jakarta.apache.org/commons/lang/api-release/index.html下面的解释: isNumeric public static boolean isNumeric(String str)Checks if the String contains only unicode digits. A decimal point is not a unicode digit and returns false. null will return false. An empty String ("") will return true. StringUtils.isNumeric(null) = false StringUtils.isNumeric("") = true StringUtils.isNumeric(" ") = false StringUtils.isNumeric("123") = true StringUtils.isNumeric("12 3") = false StringUtils.isNumeric("ab2c") = false StringUtils.isNumeric("12-3") = false StringUtils.isNumeric("12.3") = false
Parameters: str - the String to check, may be null Returns: true if only contains digits, and is non-null
上面三种方式中,第二种方式比较灵活。
第一、三种方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;
而第二方式则可以通过修改正则表达式实现校验负数,将正则表达式修改为“^-?[0-9]+”即可,修改为“-?[0-9]+.?[0-9]+”即可匹配所有数字。
如果我输入的是"a“,它能识别出来这个不是数字,该怎么写?
import java.io.* ; import java.util.* ; public class Test{ public static void main(String [] args) throws Exception{ System.out.println("请输入数字:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String line=br.readLine(); if(line.matches("\\d+")) //正则表达式 详细见java.util.regex 类 Pattern System.out.println("数字"); else System.out.println("非数字"); } }
("\d")是数字0-9 ("\\d+")是什么意思?
正则表达式用两个斜杠表示一个斜杠,后面跟着一个加号表示出现一次或多次,完整的意思就是整个字符串中仅包含一个或多个数字。
4、判断ASCII码值
public static boolean isNumeric0(String str){ for(int i=str.length();--i>=0;){ int chr=str.charAt(i); if(chr<48 || chr>57) return false; } return true; }
5、逐个判断str中的字符是否是0-9
public static boolean isNumeric3(String str){ final String number = "0123456789"; for(int i = 0;i if(number.indexOf(str.charAt(i)) == -1){ return false; } } return true; }
6、捕获NumberFormatException异常
public static boolean isNumeric00(String str){ try{ Integer.parseInt(str); return true; }catch(NumberFormatException e){ System.out.println("异常:\"" + str + "\"不是数字/整数..."); return false; } }
ps:不提倡使用方法6,原因如下:
1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。
2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。
看一下JDK源码:
public static long parseLong(String s,int radix) throws NumberFormatException { if(s == null){ throw new NumberFormatException("null"); } if(radix < Character.MIN_RADIX){ throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } if(radix > Character.MAX_RADIX){ throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } long result = 0; boolean negative = false; int i = 0,max = s.length(); long limit; long multmin; int digit; if(max > 0){ if(s.charAt(0) == '-'){ negative = true; limit = Long.MIN_VALUE; i++; }else{ limit = -Long.MAX_VALUE; } multmin = limit / radix; if(i < max){ digit = Character.digit(s.charAt(i++),radix); if(digit < 0){ throw new NumberFormatException(s); }else{ result = -digit; } } while(i < max){ // Accumulating negatively avoids surprises near MAX_VALUE digit = Character.digit(s.charAt(i++),radix); if(digit < 0){ throw new NumberFormatException(s); } if(result < multmin){ throw new NumberFormatException(s); } result *= radix; if(result < limit + digit){ throw new NumberFormatException(s); } result -= digit; } }else{ throw new NumberFormatException(s); } if(negative){ if(i > 1){ return result; }else{ throw new NumberFormatException(s); } }else{ return -result; } }
可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常。
更多java相关文章请关注java基础教程。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
