当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999

发表于: 2012-01-05   作者:bylijinnan   来源:转载   浏览:
摘要: 参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984 写了个java版的: public class Print_1_To_NDigit { /** * Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999 * 1.使用字符串
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:



public class Print_1_To_NDigit {

	/**
	 * Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
	 * 1.使用字符串存放数字。int a=123 --> char[] a={'1','2','3'};
	 * 2.递归。设置好第n位(最高位,对应char数组的第0个元素)后,接下来设置第n-1,n-2.....位
	 * 3.打印时候,前面的0不输出,见printNumber(char[] number)
	 */
	public static void main(String[] args) {
		int n=3;
		Print_1_To_NDigit p=new Print_1_To_NDigit ();
		p.print(n);
	}

	public void print(int n){
		char[] result=new char[n];
		printHelpRecursive(result,n,0);
	}
	
	//from result[0] to result[n-1],set 0-9 into it
	public void printHelpRecursive(char[] result,int length,int index){
		if(index==length){
			printNumber(result);
		}else{
			for(int i=0;i<=9;i++){
				result[index]=(char)('0'+i);
				printHelpRecursive(result,length,index+1);
			}
		}
	}
	
	//don't print the prefix '0'.e.g,when "0012",print "12"
	public void printNumber(char[] re){
		int len=re.length;
		boolean canPrint=false;
		for(int i=0;i<len-1;i++){
			if(!canPrint&&re[i]!='0'){
				canPrint=true;
			}
			if(canPrint){
				System.out.print(re[i]);
			}
		}
		System.out.println(re[len-1]);//the last bit is always printed.
	}
}

java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
比如 n = 2 那么从1一直输出到99 分析 直接输出,遇到大数时肯定有问题,比如n=100,存储100位的数
#include "stdio.h" #define N 100 void main() { int a[N],i,n; /*定义a[N]存放输入的数值,在C语言
个人版本: #include <iostream> #include <stdio.h> using namespace std; // 个人版
01./* 02.* 程序的版权和版本声明部分 03.* Copyright (c)2012, 烟台大学计算机学院学生 04.* All r
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
#include <iostream> using namespace std; int main() { int a[3],i,j,t; for(i=0;i<=2;i
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
哎,搞了半天才搞出来,现在才知道自己技术真么差,要好好努力了 #include<iostream> using n
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号