题目
- 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3 一直到最大的3位数即999
解法
/**
* 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3 一直到最大的3位数即999
*
* @param count 位数
*/
public static void printOneToNDigits(int count) {
if (count < 1) return;
// 创建数组长度为count
char[] chars = new char[count];
// 初始化chars
Arrays.fill(chars, '0');
// 赋值chars[0]
for (int i = 0; i < 10; i++) {
chars[0] = (char) (i + '0');
// 打印数值
printNumber(chars, count, 0);
}
}
/**
* 打印数值
*
* @param chars 数组
* @param count 总长度
* @param index 索引
*/
private static void printNumber(char[] chars, int count, int index) {
if (index == count - 1) {
printPerNumber(chars);
return;
}
// 设置其他索引位值
for (int i = 0; i < 10; i++) {
chars[index + 1] = (char) (i + '0');
printNumber(chars, count, index + 1);
}
}
/**
* 打印单个数
*
* @param chars
*/
private static void printPerNumber(char[] chars) {
boolean isStartZero = true;
for (char aChar : chars) {
if (isStartZero && aChar == '0') {
continue;
}
isStartZero = false;
System.out.print(aChar);
}
System.out.println();
}