gpt4 book ai didi

java - 变量相乘时的错误答案

转载 作者:行者123 更新时间:2023-12-03 21:45:42 25 4
gpt4 key购买 nike

我正在尝试将两个变量相乘。一个是 int,另一个在 char 数组中。

我的代码是这样的

int biggestProduct = 1;
int currProduct = 1;
char[] array = num.toCharArray();

for (int x = 0; x < array.length; x++) {
if (x < 5) {
System.out.println(currProduct + " * " + array[x] + " = " + currProduct * array[x]);
currProduct *= array[x];
}
}

return biggestProduct;

问题出在 currProduct*= array[x]

这是我打印出来的结果:

1 * 7 = 55
55 * 3 = 2805
2805 * 1 = 137445
137445 * 6 = 7422030
7422030 * 7 = 408211650

为什么乘法不正确?

最佳答案

问题是 char 7 的数值不是 7 而是 55

因为在 Java 中,char 数据类型是单个 16 位 Unicode 字符(见下面的编码表)。

enter image description here

如果您查看此表,您会发现 7 被编码为 0x0037 = 3*16^1 + 7 = 55

如果你想取你角色的真实数值,你可以使用Character.getNumericValue(char ch) :

 char ch = '7';
int number = Character.getNumericValue(ch);
System.out.print(number); //print 7

所以要编辑你的代码,它看起来像:

        String num = "73167";
int biggestProduct = 1;
int currProduct = 1;
char[] array = num.toCharArray();

for (int x = 0; x < array.length; x++) {
if (x < 5) {
System.out.println(currProduct + " * " + array[x] + " = " + currProduct * Character.getNumericValue(array[x]));
currProduct *= Character.getNumericValue(array[x]);
}

}

输出:

1 * 7 = 7
7 * 3 = 21
21 * 1 = 21
21 * 6 = 126
126 * 7 = 882

验证:7*3*1*6*7 = 882

关于java - 变量相乘时的错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317921/

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