最近面试的时候老碰到10进制字符串的转换的问题,例如:"012345"-->"012346","999999"-->"000000"。
public class Test {
public static void main(String[] args) {
System.out.println(convert("012345"));
}
// "012345"-->"012346"
public static String convert(String num) {
StringBuffer sb = new StringBuffer("");
char[] cs = num.toCharArray();
int[] nums = new int[cs.length];
// 把字符串转换成数字
try {
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(String.valueOf(cs[i]));
}
} catch (Exception e) {
System.out.println("您输入的字符不合法!");
return "";
}
// 最后一位加1
nums[nums.length - 1] += 1;
// 判断进位
for (int i = nums.length; i > 0; i--) {
try {
if (nums[i - 1] >= 10) {
nums[i - 2] += nums[i - 1] / 10;
nums[i - 1] %= 10;
} else {
break;
}
} catch (Exception e) {
for (int j = 0; j < nums.length; j++) {
sb.append("0");
}
return sb.toString();
}
}
for (int i = 0; i < nums.length; i++) {
sb.append(nums[i]);
}
return sb.toString();
}
}