gpt4 book ai didi

java - 我的 for 循环出了什么问题?

转载 作者:行者123 更新时间:2023-12-02 07:43:46 25 4
gpt4 key购买 nike

我正在尝试打印整数的每个数字,然后像这样打印每个数字的总和。循环有问题,但我似乎无法弄清楚。我希望它是这样的:

Please enter a number: 194
1 * 100 = 100
9 * 10 = 90
4 * 1 = 4
import java.util.Scanner;
public class PrintEachDigits {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter the number: ");
int num = scan.nextInt();
String s = ""+num;
double d = 0;
for(int i = 0; i < s.length(); i++) {
for(int j = s.length()-1; j >= 0; j--) {
d = Math.pow(10,j);
System.out.println(s.charAt(i) + " * " + d
+ " = " + (s.charAt(i)*d));
}
}
}
}

这是我的代码的输出:

Enter the number: 194
1 * 100.0 = 4900.0
1 * 10.0 = 490.0
1 * 1.0 = 49.0
9 * 100.0 = 5700.0
9 * 10.0 = 570.0
9 * 1.0 = 57.0
4 * 100.0 = 5200.0
4 * 10.0 = 520.0
4 * 1.0 = 52.0

最佳答案

您的代码存在一些问题。

第一个问题是你不需要两个循环,你只需要一个。

第二个问题是混淆 charint'0'0 不同;相反,'0' 是表示该字符编码的数值(结果为 48)。因此,要获得所需的正确值,您应该在进行数学运算之前从 char 中减去 '0'

for(int i = 0; i < s.length(); i++) { 
d = Math.pow(10, s.length() - i - 1);
int value = s.charAt(i) - '0';
System.out.println(value + " * " + d
+ " = " + (value*d));
}

这将使其接近您想要的输出。但最后仍然显示 .0,因为 ddouble。将其设置为 int 来解决该问题。

//This can be scoped to inside the loop, so you don't need to declare it beforehand
int d = (int)Math.pow(10,j);

关于java - 我的 for 循环出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com