ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

代码练习:整数分解(输入一个整数,输出该整数各位数字)

2021-09-26 18:30:34  阅读:171  来源: 互联网

标签:10 digit 各位 int 练习 System 整数 array out


要求输入一个正整数,之后输出该数的各位数字。如:输入123,输出1,2,3

  1. 题目分析:要想拆分一个整数,首先要确认它的位数,之后再根据规律逐个拆分各位。

  2. 确认整数位数,就要使用Java中的length()函数,该函数可以计算出一个字符串类型的位数(注:空格也会算作一位),如:

String a="Hello World";
System.out.println(a.length());

在这里插入图片描述
所以,我们只需要让输入的整数变成字符型就可以算出它的位数。

int a=123456;
System.out.println((a+"").length());

在这里插入图片描述
除此之外,也可以通过编写方法计算位数:

public static void main(String[] args) {
        int count = 0;
        Scanner scanner=new Scanner(System.in);
        int integer=scanner.nextInt();
        while(integer>1)
        {
            integer=integer/10;//不断除10,每除一次令计数器加一
            count++;
        }
        System.out.println(count+1);
    }
  1. 之后,便需要分析整数拆分的规律:
    在这里插入图片描述
    由图片可以看出,要拆分一个整数a,除了最高位,从个位开始的规律是(a%10^n) / 10^n-1。
    而设a的位数为b,则最高位便等于:a / 10^b-1

4.此时又有了新的问题,那就是怎么求一个数的次方?这个只需单独写一个方法就可以了

public static int Power(int x,int y)//求x的y次方
    {
        if (y==0)
        {
            return 1;//0次方统一为1
        }
        int sum=x;
        for (int i = 1; i <y; i++) {
            sum*=x;//累乘
        }
        return sum;
    }

5.解决了所有问题后,就可以开始写代码了:

public static void IntegerDisassemble(int x)
    {
        int digit=(x+"").length();//计算x的位数
        int[] array=new int[digit];
        for (int i = 0; i <digit-1; i++) 
        //从个位开始,逐个拆分整数
        {
            array[i]=(x%(Power(10,i+1))/(Power(10,i)));//注意括号
        }
        array[digit-1]=x/Power(10,digit-1);//最高位单独求出
        System.out.println("该数的拆分结果为:");
        for (int i = digit-1; i > -1 ; i--)
        //由于时从个位开始拆分的,所以要倒叙输出
         {
            if (i==0)
            {
                System.out.print(array[i]);
                return;
            }
            System.out.print(array[i]+",");
        }
    }
   

在这里插入图片描述
本题结束,以下附上完整代码:

public class Practice {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入要拆分的整数:");
        int integer=scanner.nextInt();
        IntegerDisassemble(integer);
    }

    public static void IntegerDisassemble(int x)
    {
        int digit=(x+"").length();
        int[] array=new int[digit];
        for (int i = 0; i <digit-1; i++) {
            array[i]=(x%(Power(10,i+1))/(Power(10,i)));
        }
        array[digit-1]=x/Power(10,digit-1);
        System.out.println("该数的拆分结果为:");
        for (int i = digit-1; i > -1 ; i--) {
            if (i==0)
            {
                System.out.print(array[i]);
                return;
            }
            System.out.print(array[i]+",");
        }
    }

    public static int Power(int x,int y)//求x的y次方
    {
        if (y==0)
        {
            return 1;
        }
        int sum=x;
        for (int i = 1; i <y; i++) {
            sum*=x;
        }
        return sum;
    }
}

标签:10,digit,各位,int,练习,System,整数,array,out
来源: https://blog.csdn.net/weixin_45881074/article/details/120493325

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有