数字分解

时间:2018-08-20 06:27:56

标签: java

因此要求我执行代码以返回给定数字的细分版本。输出应如下所示:

Number to break down: 123045011

100000000

20000000

3000000

0

40000

5000

0

10

1

但是我的程序是这样的:

Number to break down: 123045011
100000001
100000002
100000003
100000000
100000004
100000005
100000000
100000001
100000001

这是我的代码。

import java.util.Scanner;

public class NumberBreakdown {
    public static String brokeDownNumber(int num) {
        String numberBrokenDown = "";
        int numLength = Integer.toString(num).length();
        String numAsString = Integer.toString(num);

        for(int i = 0; i < numLength; i++) {
            // convert Integer to string by using Integer.toString(varToConvert);
            // convert char to String by using Character.toString(varToConvert)

            int currentNum = Integer.parseInt(Character.toString(numAsString.charAt(i)));
            currentNum += Math.pow(10,numLength  - 1);
            numberBrokenDown += Integer.toString(currentNum) + "\n";

        }
        return numberBrokenDown;
    }
    public static void main(String[] args) {
        // no need to change this 
        Scanner reader = new Scanner(System.in);
        System.out.print("Number to break down: ");
        int number = Integer.parseInt(reader.nextLine());
        System.out.println(brokeDownNumber(number));

    }
}

我应该更改/做什么?

3 个答案:

答案 0 :(得分:0)

public class NumberBreakdown {
    public static String brokeDownNumber(int num) {
        String numberBrokenDown = "";

        String numAsString = Integer.toString(num);
        int numLength = numAsString.length();


        for(int i = 0; i < numLength; i++) {
            // convert Integer to string by using Integer.toString(varToConvert);
            // convert char to String by using Character.toString(varToConvert)
            int currentNum = num%10;
            num =  num/10;
            if(currentNum ==0) {
                System.out.print("0");
            }else {
//                 currentNum += Math.pow(10,numLength  - 1);
//                 numberBrokenDown += Integer.toString(currentNum) + "\n";
                 System.out.print(currentNum);
                 for(int j=0;j<i;j++)
                    System.out.print("0");

            }
            System.out.println("");
        }
        return numberBrokenDown;
    }
    public static void main(String[] args) {
        // no need to change this 
        Scanner reader = new Scanner(System.in);
        System.out.print("Number to break down: ");
        int number = Integer.parseInt(reader.nextLine());
        brokeDownNumber(number);

    }
}

答案 1 :(得分:0)

如下更改您的for循环-

  for(int i = 0; i < numLength; i++) {
        // convert Integer to string by using Integer.toString(varToConvert);
        // convert char to String by using Character.toString(varToConvert)

        int currentNum = Integer.parseInt(Character.toString(numAsString.charAt(i)));
        int currentNum2 = currentNum*(int) Math.pow(10,numLength  - i -1);
        numberBrokenDown += Integer.toString(currentNum2) + "\n";

    }

答案 2 :(得分:0)

只需更改一行代码。

currentNum *= (int)Math.pow(10, numLength - i - 1);

在每次迭代中,10的幂应减小。因此,需要numLength - i - 1
+=更改为*=,因为currentNum应该乘以10的幂才能获得理想的结果。