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); }
相关文章推荐
- Java中基本数据类型的取值范围及存储需求
- java基本类型byte的取值范围
- java基本类型byte的取值范围
- java基本类型byte的取值范围
- 一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
- 查看JAVA中各基本类型的取值范围
- 为什么Java中byte类型的取值范围是-128~127
- 为什么Java byte 类型的取值范围是-128~127
- java中数据类型取值范围的计算
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
- 怎么根据基本类型的名字字符串,判断一个值是否在一个范围内
- 在Java中判断一个文件是否是图片和其类型的方法
- 为什么Java byte 类型的取值范围是-128~127
- java如何判断一个文件的类型
- 第四天 Java数据类型,数据取值范围
- java基本类型取值范围及相关类型转换
- 为什么java中Byte类型的取值范围是-128~127
- 判断一个类是JAVA类型还是用户定义类型
- java基本类型byte的取值范围