//取值范围测试
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);
}
Java判断一个数的取值范围和类型。
最新推荐文章于 2024-08-05 02:05:54 发布