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

	//取值范围测试
	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);
	 }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值