输入任意一个整数转换成一定要求的整数,要求在下面

要求如下:

输入:任意一个整数A(1234567890)

输出:一个数B,要同时满足如下2条件
      1、大于A的最小数
      2、使得B数相邻两位的数字不同

举例:10    ===> 12
      33    ===> 34
      1223  ===> 1230


写了一个方法,代码如下:

public String checkNum(String num,int isAdd){
			if(isAdd==1){
				num = (Integer.parseInt(num)+1)+"";
			}
			int count = 0;
			String[] str = num.split("");
			
			for(int i=str.length-1; i>0; i--){
				int num1 = Integer.parseInt(str[i]);
				if(i==str.length-1 && (str.length-1)>1){
					int num2 = Integer.parseInt(str[i-1]);
					if(num1==num2){
						count++;
						num1 = num1 + 1;
						if(num1>9){
							num1=0;
							str[i-1] = (num2 + 1) + ""; 
						}
						str[i] = num1 + "";
					}
				}else if((str.length-1)>1 && i==1){
					int num2 = Integer.parseInt(str[i+1]);
					if(num1==num2){
						count++;
						num2++;
						for(int j=2;j<str.length;j++){
							str[j] = 0 + "";
						}
						str[i+1] = num2 + "";
					}
				}else if(str.length>2 && i>0){
					
					int num2 = Integer.parseInt(str[i+1]);
					int num3 = Integer.parseInt(str[i-1]);
					
					if(num1==num2){
						count++;
						num2 = 0;
						num1 = num1 + 1;
						str[i+1] = num2 + "";
						str[i] = num1 + "";
					}
					if(num1==num3){
						count++;
						num1++;
						for(int j=i+1;j<str.length;j++){
							str[j] = 0 + "";
						}
						str[i] = num1 + "";
					}
				}
			}
			
			StringBuffer sb = new StringBuffer();
			for(int i=1;i<str.length;i++){
				sb.append(str[i]);
			}
			num = sb.toString();
			if(count>0){
				return checkNum(num,0);
			}else{
				return num;
			}
		}

 

具体使用在附件里面,是一个jsp文件。

但是我写的方法在转换成Ingeter类型时数字超过九位会报错,希望大家指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值