`

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

 
阅读更多
参考了网上的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.
	}
}

分享到:
评论
3 楼 bylijinnan 2015-07-03  
sand_clock 写道
楼主代码有两个bug
1、没有判断n为负数的情况

2、void printNumber()写的不对,你的代码会输出0
错误代码:
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. 
}
纠正代码:
public void printNumber(char[] re){ 
        int len=re.length; 
        boolean canPrint=false; 
        for(int i=0;i<len;i++){ 
            if(!canPrint&&re[i]!='0'){ 
                canPrint=true; 
            } 
            if(canPrint){ 
                System.out.print(re[i]); 
            } 
        } 
        System.out.println( );
}  

2 楼 sand_clock 2015-07-03  
楼主代码有两个bug
1、没有判断n为负数的情况

2、void printNumber()写的不对,你的代码会输出0
错误代码:
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. 
}
纠正代码:
public void printNumber(char[] re){ 
        int len=re.length; 
        boolean canPrint=false; 
        for(int i=0;i<len;i++){ 
            if(!canPrint&&re[i]!='0'){ 
                canPrint=true; 
            } 
            if(canPrint){ 
                System.out.print(re[i]); 
            } 
        } 
        System.out.println( );
}  
1 楼 此与彼岸 2013-09-13  
     

相关推荐

    2021字节跳动面试参考手册.pdf

    - Java中有许多内置的输入输出流类,用于处理不同类型的数据流,比如字节流(InputStream、OutputStream)和字符流(Reader、Writer)等。 4. Java中的文件类File。 - File类提供了一种用于操作文件系统中的文件...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

    最新python程序设计课后习题答案-第一单元备课讲稿.doc

    14. 表达式4//3的结果是1,15 % 2的结果是1,1^0的结果也是1,但~1(按位取反)的结果是-2,因此值不是1的是~1。 15. Python语句print(r"\nGood")会打印出字符串'\nGood',因为'r'前缀表示原始字符串,不会将'\n'...

    《剑指Offer》题目及代码.pdf

    32. 从1到整数n中1出现的次数:需要遍历1到n中的每个数字,对于每个数字判断其各位数中1出现的次数,并累加这些次数。 33. 把数组中的数排成一个最小的数:需要对数字进行排序,排序的依据是两个数字组成的字符串...

    正则表达式

    /\d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组 成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如:...

    2021-2022计算机二级等级考试试题及答案No.3415.docx

    - `a &gt;&gt; 1`意味着将该二进制数向右移动一位,结果为`0000 0011`,即十进制的3。 - 因此,`printf(“%d\n”, a&gt;&gt;1);`的输出为3。 ### 3. 窗体的DrawWidth属性 - **知识点概述**:在编程中,窗体的`DrawWidth`属性...

    2021-2022计算机二级等级考试试题及答案No.10560.docx

    - **详细说明**: 局域网通常覆盖较小的地理区域,例如一栋楼或者几个相邻的建筑物,而广域网则覆盖更大的范围,比如城市、国家甚至全球。局域网因为覆盖范围小,所以通常拥有更高的传输速率和更低的延迟,同时也有更...

    2021-2022计算机二级等级考试试题及答案No.17290.docx

    选项A中的078不是一个有效的八进制数,因为八进制中没有数字8。 16. **表达式计算**:在某些编程语言中,如VBScript,'M+N'会被解释为字符串连接,因此`1+&K`会得到1232的结果。 17. **数据库系统**:数据库系统...

    2021-2022计算机二级等级考试试题及答案No.10325.docx

    设\(a、b、c、d、m、n\)均为int型变量,且\(a=5\)、\(b=6\)、\(c=7\)、\(d=8\)、\(m=2\)、\(n=2\),则逻辑表达式\((m=a&gt;b)\&\&(n--c&gt;d)\)运算后,\(n\)的值是()。 A. 0 B. 1 C. 2 D. 3 **正确答案:** C **分析:*...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数,其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月...

    2021-2022计算机二级等级考试试题及答案No.14320.docx

    因此,在上述示例程序中,`b++` 将字符 '2' 增加 1 变为 '3'(ASCII 值为 51),所以输出结果为 B.50,2。 ### 3. PowerPoint 2003 放映方式的理解 - **知识点**: PowerPoint 2003 的不同放映方式及其特点。 - **...

    2021-2022计算机二级等级考试试题及答案No.10725.docx

    Java程序通过流来进行输入输出操作,流是数据输入输出的抽象表示。题目中的描述“Java程序通过流来完成输入和输出,流是输入或输出信息的抽象。流通过Java的输入/输出系统与外设连接进行数据通信。”是对流概念的...

    2021-2022计算机二级等级考试试题及答案No.10508.docx

    ### 1. C语言中静态变量的理解 题目给出了一个具体的C语言函数`fun`以及`main`函数的调用方式,并要求求解两次调用`fun`函数后的输出结果。通过分析代码可以得出: - 函数`fun`接受两个整型参数`x`和`y`。 - 函数...

    山大计算机学院、软件学院《多媒体技术》考试题

    10. **量化精度与SQNR的关系**:如果每个样本的量化精度是N个二进制位,则其信号量化噪声比(SQNR)大约为\(6N + 1.76\) dB。这意味着量化精度越高,SQNR也越高,声音质量越好。 #### 二、判断题知识点解析 1. **...

Global site tag (gtag.js) - Google Analytics