输入数字n,按顺序打印出从1到最大的N位十进制数,比如输入3,则打印出1、2、3一直到最大的3位数999.
public class printOneToN {
public static void main(String args[]){
Solution17 solution17 = new Solution17();
solution17.print1ToMaxOfNDigits(3);
}
}
class Solution17{
void print1ToMaxOfNDigits(int n){
if(n<0){
return;
}
char charArr[] = new char[n];
for(int i=0; i<n; i++){
charArr[i]='0';
}
while(!increment(charArr)){
printNumber(charArr);
}
}
private boolean increment(char[] charArr){
boolean isOverflow=false;
int nTakeOver = 0;
int arrLength=charArr.length;
for(int i=arrLength-1; i>=0; i--){
int iSum=charArr[i]- '0' + nTakeOver;
if(i==arrLength-1){
iSum++;
}
if(iSum >= 10){
if(i==0){
isOverflow=true;
}else{
nTakeOver=1;
iSum-=10;
charArr[i]=(char)(iSum+'0');
}
}else{
charArr[i] = (char)(iSum+'0');
break;
}
}
return isOverflow;
}
private void printNumber(char[] charArr){
boolean isZero=true;
for(int i=0; i<charArr.length; i++){
if(isZero && charArr[i]!='0'){
isZero=false;
}
if(!isZero){
System.out.print(charArr[i]);
}
}
System.out.println();
}
}