gpt4 book ai didi

Java:计算给出了错误的答案,我的错误在哪里?

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

我似乎无法弄清楚为什么打印不正确:

public class test3 {
public static void main(String[] args) {
double[] gens = {100, 200.1, 9.3, 10};
double d0 = 0;
double d1 = 0;
double d2 = 0;
double d3 = 0;
double d4 = 0;
double d5 = 0;
double d6 = 0;
double d7 = 0;
double d8 = 0;
double d9 = 0;
for (int i = 0; i < gens.length; i++) {
double percs = gens[i];
while (percs < -9 || 9 < percs) percs /= 10;
percs = Math.abs(percs);
if (percs == 0) {
d0 += 1;
}
else if (percs == 1) {
d1 += 1;
}
else if (percs == 2) {
d2 += 1;
}
else if (percs == 3) {
d3 += 1;
}
else if (percs == 4) {
d4 += 1;
}
else if (percs == 5) {
d5 += 1;
}
else if (percs == 6) {
d6 += 1;
}
else if (percs == 7) {
d7 += 1;
}
else if (percs == 8) {
d8 += 1;
}
else if (percs == 9) {
d9 += 1;
}
}
double[] pack = {
d0 /= gens.length,
d1 /= gens.length,
d2 /= gens.length,
d3 /= gens.length,
d4 /= gens.length,
d5 /= gens.length,
d6 /= gens.length,
d7 /= gens.length,
d8 /= gens.length,
d9 /= gens.length
};
System.out.println(pack[0]);
System.out.println(pack[1]);
System.out.println(pack[2]);
System.out.println(pack[3]);
System.out.println(pack[4]);
System.out.println(pack[5]);
System.out.println(pack[6]);
System.out.println(pack[7]);
System.out.println(pack[8]);
System.out.println(pack[9]);
}
}

我知道这很重复,但这就是我现在处理它的方式。

无论如何,本质上,它应该取 gens 数组中的这四个数字,将它们截断到每个数字的第一个数字(即分别为 1、2、9 和 1),然后计算每个数字从 0- 9 出现了,所以“1”应该给出 0.5(50%),2 应该给出 .25(25%),9 应该给出 .25(25%),其中 0-9 的每隔一个数字应该给出 0。我得到 0.5对于数字“1”,但对于其他所有数字都是 0,我一直没能找到我的错误。我得到的结果取决于我输入的数字(硬编码),但它们几乎总是错误的。

有什么想法吗?

谢谢!

最佳答案

改变

double percs = gens[i];

int percs = (int)gens[i];

如果你将它保留为 double ,你的 while 循环

while (percs < -9 || 9 < percs) percs /= 10;

不会正确截断除第一个以外的所有数字,因为它会执行正常除法而不是整数除法。如果在 while 循环之后打印 percs,您可以看到这一点。


我还想指出,这可以更容易地完成。例如:

double[] gens = {100, 200.1, 9.3, 10};

int[] count = new int[10];

for (double d : gens)
count[("" + Math.abs(d)).charAt(0) - '0']++;

for (int n : count)
System.out.println((double)n / gens.length);

会做同样的事情。

关于Java:计算给出了错误的答案,我的错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057894/

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