您的位置:首页 > 编程语言 > Java开发

Java判断一个数的取值范围和类型。

2017-11-16 16:03 447 查看
//取值范围测试
void rangeTest(){
print( checkRange(111, Integer.class, 1, 5, 10, 123, "1-111") );
print( checkRange("女", String.class, "男", "女") );
}
/**
* 取值范围测试。类型,取值1,取值2,取值3,-,取值4
* @param object:判断对象
* @param classType:类型
* @param args: 参数
* @return
*/
boolean checkRange(Object object, Class<?> classType, Object ... args){
if(object.getClass() != classType){
return false;
}

if(args.length == 0){
return true;
}

for(Object arg : args){
//如果是字符串
if(arg instanceof String){
String arg_string = (String)arg;

//范围字符串
if(this.checkStringIsRange(arg_string)){
if(this.checkNumber(object.toString())){
Double num1 = this.getRangeStringMin(arg_string);	//最小值
Double num2 = this.getRangeStringMax(arg_string);	//最大值
Double num = Double.valueOf(object.toString());	//当前值
if(num >= num1 && num <= num2){
return true;
}
}

//不是范围字符串
}else{
if(object.equals(arg)){
return true;
}
}
//不是字符串
}else{
if(object.equals(arg)){
return true;
}
}
}
return false;
}

//判断字符串是否为一个范围。比如"1-10",范围为1到10
boolean checkStringIsRange(String str){
String []arr_str = str.split("-");	//分割字符串
if(arr_str.length != 2){
return false;
}

String num1 = arr_str[0];	//第一个数字
String num2 = arr_str[1];	//第二个数字
if(!this.checkNumber(num1) || !this.checkNumber(num2)){
return false;
}

return true;
}
//获取范围字符串最小值
Double getRangeStringMin(String str){
String []arr_str = str.split("-");	//分割字符串
String num1 = arr_str[0];	//第一个数字
return Double.valueOf(num1);
}

//获取范围字符串最小值
Double getRangeStringMax(String str){
String []arr_str = str.split("-");	//分割字符串
String num2 = arr_str[1];	//第二个数字
return Double.valueOf(num2);
}

//判断字符串是否为数字
boolean checkNumber(String number){
try{
Double _double = Double.valueOf(number);	//强制转换为double
if(_double.equals(Double.POSITIVE_INFINITY) || _double.equals(Double.NEGATIVE_INFINITY) ||
_double.equals(Double.NaN)){
throw new Exception("INFINITY or NaN");
}
}catch(Exception e){
return false;
}
return true;
}

//输出
public static void print(Object ... args) {
String str = "";
for(int i = 0; i < args.length; i++){
str +=  args[i];
if( i != args.length - 1){
str += ",";
}
}
System.out.println(str);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: