gpt4 book ai didi

java 添加两个不同长度的 int 数组。为什么给出的结果小于正确结果?

转载 作者:行者123 更新时间:2023-12-01 18:48:03 25 4
gpt4 key购买 nike

public void add(int[]a1,int[]a2){       

int atotal[] = new int[20];
int capacity3 = Math.max(a1.length, a2.length);

for (int i = 0; i < capacity3; i++)
{
int a3 = a1[i] + a2[i];
if (a3 > 9)
{
atotal[i] = a3 % 10;
atotal[i+1] += a3 /10;
}
else
{
atotal[i] = a3;
}
}

for(int i = capacity3 - 1; i >= 0; i--)
{
System.out.print(atotal[i] + " ");
}
}

在我的程序中,两个数组中的每个元素相加时,每个单个位相加的进位不会添加到下一个无意义位。所以如果 array1[0] = 9, array2[0] = 2.. 我的 result[0] = 1 并且我的 result[1] 没有从 [0] 添加的结果。例如,如果我将 9999 和 1234 作为两个数组,结果是 0123 而不是 11233。

最佳答案

问题是您将进位放在 atotal[i+1] 中,然后您完全忽略下一个循环中的值。

要解决此问题,您只需将 atotal[i] 添加到 a3 即可。

int a3 = a1[i] + a2[i] + atotal[i];

然后在 if 语句中,您实际上不需要在此处执行 += atotal[i+1] += a3/10; 因为 atotal [i+1] 始终为 0,并且在下一个循环中被删除,因此它可能只是 =

最后,如果有进位,您的 for 循环可能会丢失第一个数字。要解决此问题,您只需以容量 3 启动 i,但在某些情况下,您将打印前导 0。

因此,使用这些修复调用 add(new int[]{9,9,9,9}, new int[]{4,3,2,1}); 会产生

1 1 2 3 3 

所以固定代码可能看起来像这样。

public static void add(int[]a1,int[]a2){       
int atotal[] = new int[20];
int capacity3 = Math.max(a1.length, a2.length);
for (int i = 0; i < capacity3; i++) {
int a3 = a1[i] + a2[i] + atotal[i];
System.out.println(a3);
if(a3>9) {
atotal[i] = a3 % 10;
atotal[i+1] = a3 / 10;
} else {
atotal[i]=a3;
}
}
for(int i=capacity3; i>=0; i--) {
System.out.print(atotal[i] + " ");
}
}

关于java 添加两个不同长度的 int 数组。为什么给出的结果小于正确结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878676/

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