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;i for(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
。这看起来可能很传统,但在输入系统之前,在纸上多次写下算法是一个好习惯。