打印1到最大的n位数,思路而已
public class Main {
/**
* 输入一个String类型的正数,返回这个正数加1的字符串形式
* @param num
* @return num + 1
*/
public static String increate1(String num) {
//结果字符串
String res = null;
//结果放在一个StringBuilder中
StringBuilder sb = new StringBuilder(num);
//原值是"123456"则在StringBuilder中存放的形式是"654321",即字符串低位代表值的低位
sb.reverse();
//进位变量
int carry = 1;
//从字符串最低位(即值的低位开始处理)
for (int i = 0; i < sb.length(); i++) {
//表示处理到最后一个位有进位
if (i == sb.length() - 1 && carry == 1 && sb.charAt(i) == '9') {
//该为置0
sb.setCharAt(i, '0');
//向前进一位
sb.append('1');
break;
}
//如果处理到中间位
//保存当前位的值
char temp = (char) (sb.charAt(i) + carry);
//如果有进位
if (temp - '9' > 0) {
//当前位置0
temp = '0';
//进位置1
carry = 1;
//设置当前位
sb.setCharAt(i, temp);
continue;
} else {//否则没有进位,直接置当前位
sb.setCharAt(i, temp);
break;
}
}
//最后将StringBuilder变量倒置,得到结果
res = sb.reverse().toString();
return res;
}
public static void main(String[] args) {
String str = "999";
for (int i = 0; i < 200; i++) {
str = increate1(str);
System.out.println(str);
}
}
}