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

被折叠的 条评论
为什么被折叠?



