最近遇到判断数字的问题,简单总结了一下和大家分享~
//1、正则表达式
public static boolean isNumeric1(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
//2、java自带函数
public static boolean isNumeric2(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
//3、正则表达式
public static boolean isNumeric(String str){
if(str.matches("\\d
*")){
return true;
}else{
return false;
}
}
//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<str.length();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{/* Only got "-" */
throw new NumberFormatException(s);
}
}else{
return -result;
}
}
可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...
未完,待大家一起续~~~欢迎大家共享好的方法~~~
分享到:
相关推荐
Java基础-判断随机字符串中的字母和数字 Java是一种广泛应用于软件开发的编程语言,而字符串处理是Java开发中的一项基本操作。在实际开发中,我们经常需要对字符串进行处理和判断,例如判断字符串中有多少字母、...
在Java中,判断一个整数是否为回文数字是一项常见的任务,常用于各种算法问题。下面我们将详细介绍如何用Java来实现这个功能。 首先,我们可以采用将数字转化为字符串然后比较其正读与反读的方法。这种方法简单易懂...
### Java中关于变量的练习题及答案解析 #### 基础知识点概述 在Java编程语言中,变量是用来存储数据的容器。理解变量的基本概念及其使用规则是学习Java的基础之一。本篇解析将针对给定的练习题进行详细解答,并...
javascript中判断变量是否为数字的方法,这里主要介绍javascript里的 isNaN() 函数。 功能: isNaN() 函数用于检查其参数是否是非数字值。 语法: isNaN(x) x 必需。要检测的值。 返回值: 如果 x 是特殊的非数字值 ...
Java中的变量是程序中最基本的存储单元,它们是用来存储数据的容器。理解变量在Java编程中的概念至关重要,因为它是编写任何程序的基础。在Java中,变量扮演着存储和检索值的角色,这些值可以是整数、小数、字符或者...
标题中提到的“java判断String类型是否能转换为int的方法”,是指在Java编程语言中,如何编写代码来判断一个String类型的变量是否能够被转换成一个int类型的数值。在Java中,String到int的转换是一个常见的需求,...
【JAVA实现的猜数字游戏】 ...总之,这个JAVA猜数字游戏展示了JAVA的基本语法、控制流、输入/输出、随机数生成以及条件判断等核心概念。通过实际编写这样的程序,开发者可以巩固和提高自己的JAVA编程技能。
在Java中,我们可以利用流程控制语句来实现判断一个整数是否为回文数的功能。下面将详细讲解这一知识点。 首先,我们需要理解Java中的流程控制语句。流程控制语句主要包括条件控制(if-else)、循环控制(for、...
4. 最后根据变量类型和Long字符串进行对比,即可判断变量是否是Long类型。 Java判断Long类型的实例代码 下面是Java判断Long类型的实例代码: ```java public class HelloWorld { public static void main(String...
变量是临时或持久性的数据存储空间,可以用来保存各种类型的信息,如数字、文本(字符串)、布尔值等。理解变量及其数据类型对于编写任何Java程序至关重要。 1. **什么是变量?** 变量是一个动态存储数据的容器,...
根据题目描述,我们可以通过编写一个简单的Java程序来判断用户输入的一个数字是否为完全数。下面将对代码进行详细的分析和解释: ```java //test.java import java.io.*; public class test { public static void...
### 二、Java判断回文数 1. **字符串操作**:判断一个数是否为回文数时,可以先将该数转换为字符串形式。这是因为字符串提供了一系列方便的操作方法,如`charAt(int index)`,可以获取指定位置的字符。 ```java ...
我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和null时都会得到object,详细请看js数据类型,这就是typeof的局限性,并不能准确的判断...
一个合法的Java标识符由字母(包括Unicode字符)、数字、下划线(_)或美元符号($)组成,且不能以数字开头。例如,`age`、`num1`、`bookPrice_$`都是合法的变量名。为了避免混淆,通常推荐使用有意义的名称,如`...
Java猜数字游戏是一种常见的编程练习,它可以帮助初学者掌握基础的控制流程、条件判断和循环结构。在这个游戏中,计算机随机生成一个预设范围内的整数,玩家需要通过输入猜测这个数字,程序会根据玩家的猜测给出提示...
通过这个猜数字小游戏,初学者可以练习基本的Java编程技巧,如变量声明、条件判断、循环控制、异常处理以及对象的创建和方法的调用。对于有经验的开发者来说,这可能是一个不错的练习,用于快速验证概念或测试环境...
Java 猜数字游戏 ...Java 猜数字游戏程序通过使用 Math.random() 方法、Scanner 类、循环结构和判断结构,实现了一个简单的猜数字游戏。该程序可以帮助初学者学习 Java 语言的基本语法和编程思想。
对于初学者来说,理解并掌握 Java 的基本数据类型和变量的声明至关重要。本文将深入探讨 Java 中的数据类型以及如何声明变量。 Java 提供了八种基本数据类型,它们分为两大类:整型和浮点型,以及两种布尔类型和一...