`
mimang2007110
  • 浏览: 233688 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

阅读更多

要求如下:

输入:任意一个整数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类型时数字超过九位会报错,希望大家指教。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics