gpt4 book ai didi

java - 在Java中得到负数?

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

public static void main(String[] args) {
int[] arr = {793810624, 895642170, 685903712, 623789054, 468592370};
miniMaxSum(arr);
}

static void miniMaxSum(int[] arr) {
Arrays.sort(arr);

long min = 0;
long max = 0;
long minSum = 0, maxSum = 0;

for (int j = 0; j < 4; j++) {
min += arr[j];
}

for (int j = 1; j < 5; j++) {
max += arr[j];
}

minSum = arr[0] + arr[1] + arr[2] + arr[3];
maxSum = arr[1] + arr[2] + arr[3] + arr[4];

System.out.print(minSum);
System.out.print(" ");
System.out.print(maxSum);
}

大家好,有个问题请教一下。我有两种不同的方法来计算最小和最大总和。然而,当运行此示例时,我得到 minSum/maxSum 的负值,而 for 循环给出了我期望的答案。

为什么求和结果是负数?某种整数溢出? IntelliJ 返回的 minSum 为 -1722871536,maxSum 为 -1295821736。

最佳答案

是的。整数数学。整数相加时,结果是整数。即使它溢出(正如您猜测的),然后您加宽它到long。在执行加法修复之前扩大一项。

minSum = arr[0] + arr[1] + arr[2] + (long) arr[3];
maxSum = arr[1] + arr[2] + arr[3] + (long) arr[4];

并且,为了验证,

System.out.print(minSum == min);
System.out.print(" ");
System.out.print(maxSum == max);

输出

true true

关于java - 在Java中得到负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418544/

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