Java 数字细分

Java 数字细分,java,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 10000

所以我被要求做一个代码,返回给定数字的分解版本。输出应如下所示:

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));

    }
}
import java.util.Scanner;
公共类编号breakdown{
公共静态字符串断开编号(int num){
字符串numberBrokenDown=“”;
int numLength=Integer.toString(num.length();
字符串numAsString=Integer.toString(num);
对于(int i=0;i
我应该更改/做什么?

公共类编号Breakdown{
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);

    }
}
公共静态字符串断开编号(int num){ 字符串numberBrokenDown=“”; 字符串numAsString=Integer.toString(num); int numLength=numAsString.length(); 对于(int i=0;ifor(int j=0;j更改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";

    }
for(int i=0;i
只需更改一行代码

currentNum *= (int)Math.pow(10, numLength - i - 1);
在每次迭代中,10的功率应该减少。因此,需要
numLength-i-1


+=
更改为
*=
,因为currentNum应乘以10次方才能得到所需的结果。

尝试将数字乘以10…0,而不是将其相加。您可以在
Math.pow(…)之前使用
*=
而不是
+=
。另外
numLength-1
应该包含
i
。这看起来可能很传统,但在输入系统之前,在纸上多次写下算法是一个好习惯。