gpt4 book ai didi

Java double 在条件中不正确比较

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

尝试使用条件语句而不是 if 语句进行双重比较。一步一步调试了好几次,都搞不清楚java认为-9==0是在哪个星球上。当你突出显示它时,它会说 false,但无论如何都会增加“零”双倍。其他的似乎都很好。

我的输入是:

6
-4 3 -9 0 4 1

代码:

public class HRWPlusMinus {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int length = Integer.valueOf(in.nextLine());
String[] input = in.nextLine().split(" ");
solveWOF(length, input);
}

//solve with for loop
public static void solve(int length, String[] input) {
double pos = 0;
double neg = 0;
double zero = 0;
for (int i = 0; i < length; i++){
int test = Integer.valueOf(input[i]);
if (test > 0) {pos++;}
else if (test < 0) {neg++;}
else {zero++;}
}
System.out.printf("%.6f \n%.6f \n%.6f", (pos/length), (neg/length), (zero/length));
}

//solve with conditionals
public static void solveWOF(Integer length, String[] input) {
double pos = 0, neg = 0, zero = 0;
for (int i=0; i<length; i++) {
Double test = Double.valueOf(input[i]);
zero = (test == 0)? zero++:
test > 0 ? pos++: neg++;
}
System.out.printf("%.6f \n%.6f \n%.6f", (pos/length), (neg/length), (zero/length));
}
}

顶部方法有效,底部方法是我遇到问题的方法。

最佳答案

您的第一个问题是 zero++ 的行为与您想象的不同。它检索值,然后递增它,因此您始终将值分配给自身。您可以验证以下内容是否打印零:

int zero = 0;
zero = zero++;
System.out.println(zero);

因此,这一行将不起作用:

zero = (test == 0)? zero++:
test > 0 ? pos++: neg++;

其他一些问题已经在评论中讨论过。

关于Java double 在条件中不正确比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066042/

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