打印从1到n位数(防止数据溢出)

 1 package LeetCode;
 2
 3 /*打印N位最大数据*/
 4 public class PrintToMaxOfDigits {
 5
 6     public static void main(String[] args) throws Exception {
 7         // TODO Auto-generated method stub
 8         PrintToMaxData(0);
 9     }
10     public static void PrintToMaxData(int n) throws Exception
11     {
12         if (n<=0)
13         {
14             System.out.println("输入的值不符合要求");
15             throw new Exception("输入值不符合题意");
16
17         }
18         char numbel[]=new char[n+1];
19
20         numbel[n]=‘\0‘;
21
22         for(int i=0;i<10;i++)
23         {
24             numbel[0]=(char) (‘0‘+i);
25             PrintTo(numbel,n,0);
26         }
27     }
28
29     public static void PrintTo(char array[],int length,int index)
30     {
31         //进行每一位的全排列
32         if(index==length-1)
33         {
34             PrintNum(array);
35             return;
36         }
37
38         for(int i=0;i<10;i++)
39         {
40             array[index+1]=(char) (i+‘0‘);
41             PrintTo(array,length,index+1);
42         }
43     }
44     public static void PrintNum(char numbel[])
45     {
46         boolean  isBegining=true;
47         int nLength=numbel.length;
48
49         //循环找到非零的位置进行打印
50         for(int i=0;i<nLength;i++)
51         {
52             //通过
53             if(isBegining && numbel[i]!=‘0‘)
54                 isBegining=false;
55             if(isBegining==false)
56                 System.out.print(numbel[i]);
57         }
58     }
59 }

对全排列数组进行递归法

时间: 2024-08-18 06:40:23

打印从1到n位数(防止数据溢出)的相关文章

使用sprintf打印float并控制小数位数时引起的问题

最近在做项目中发现一个Bug,直接把进程搞死,查了一下,居然是一个最不起眼的地方导致的,在此记录一下. 先看下面代码 #include <iostream> #include <stdio.h> using namespace std; int main() { char aa[1024] = {0}; float f = 50.123456; // 本意是想把一个浮点数输出到字符串中,小数位为两位,漏了 sprintf(aa, "%0.*f", f); pri

剑指Offer10 打印1到最大n位数

1 /************************************************************************* 2 > File Name: 10_PrintToMaxNum.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月30日 星期二 00时47分36秒 6 *************************************

课堂测试——数据位数、位数输出、各位数上数据求和

2016.10.18Java课堂测试 在课堂上写的时候,写到各位书身上数据输出时.因为处理不好取最高位的步骤所以不能继续进行编程. 经过后期查找之后: 引用import static java.lang.Math.*; 求x的y次方运算,Math.pow(x,y); 求整数部分,Math.floor();//这里运行之后发现是double类型所以又用了强制转换. 将Int转换为Double类型,int number1=(int) number2; 另外的问题就是: 因为数据上存在多次变化使用,所

c语言位域的使用注意事项——数据溢出

c语言可以使用位域来节省变量的空间,例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位.位域的取值范围非常有限,数据稍微大些就会发生溢出,这个字使用keil的使用,keil提示,溢出的警告, 因此不能忽视keil的任何警告,否则数据溢出了,你代码的功能是完不成的. struct pack{unsigned a:12;  unsigned  :20;//该位域成员不能使用,用于填充unsigned c:6;  }; 另一种是可以拿来填充,因为存在内存对齐的原因. 原文地址

Int数据溢出的检查 leetcode7

Int数据溢出的检查 leetcode7 一.题目: 7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1].请根据这个假设,如果反转后整数溢出那么就返回 0. 二.解答: 方法: 需要知道int型数据的范围——int类型是3

不同位数操作系统的 数据长度

16位平台 32位平台 64位平台   char 1个字节8位 1个字节8位 1个字节   short  2个字节16位 2个字节16位 2个字节   int 2个字节16位 4个字节32位 4个字节   long  4个字节32位 4个字节32位 8个字节   指针 2个字节 4个字节32位 8个字节   long long 8个字节64位 8个字节            

Java中的基本类型转换,数据溢出原理

java中的数据类型 java是一种强类型语言,在java中,数据类型主要有两大类,基本数据类型和引用数据类型,不同的数据类型有不同的数据存储方式和分配的内存大小. 基本数据类型中,各数据类型所表示的范围也是不一样的,如下所示: 由于在java中,整数默认是采用int型,浮点数默认采用的是double型进行存储,所以在定义long型和float型数据时,必须在数值后面加'l','L'和'f','F',如: 1 long a = 1000l; 2 long b = 2000L; 3 float c

JAVA之数据溢出

Integer在java中属于包装类,既能用于字符串与整型的转换,也能用于拆箱与装箱 package ABC; public class A{ public static void main(String[] args) { // TODO Auto-generated method stub //得到整形的最大值 int max=Integer.MAX_VALUE; //输出最大值 System.out.println("整形的最大值是"+max); //最大值加1 System.o

java基础:强制转化数据溢出后结果计算

结果为-126 以下为分析过程