gpt4 book ai didi

java - 在数组中添加数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:07 25 4
gpt4 key购买 nike

在这种情况下,我想将此数组中的两个数字相加以获得相加时的特定总和,比方说,4。我还想输出正在添加的索引以获得该特定总和,只是为了查看我的代码的内部工作原理。我究竟做错了什么?

public static int addingNumbers(int[] a) {
int i1 = 0, i2 = 0;

for(int i = 0, j = i + 1; i < a.length && j < a.length; i++, j++) {
if(a[i] + a[j] == 4) { // index 0 and index 2 when added gives you a sum 4
i1 = i;
i2 = j;
}
}
System.out.println("The indices are " + i1 + " and " + i2);
return i1;
}

public static void main(String args[]) {
int[] a = {1, 2, 3, 4, 5, 6};
System.out.println(addingNumbers(a));
}

最佳答案

您犯的错误是只使用一个循环遍历数组一次:

for(int i = 0, j = i + 1; i < a.length && j < a.length; i++, j++) {

在您的循环中,您将 i 设置为 0,将 j 设置为 1,然后每一步递增它们。所以你只比较数组中的相邻位置:

  1. 迭代:a[0] + a[1]
  2. 迭代:a[1] + a[2]
  3. 迭代:a[2] + a[3]

等pp

因为你的数组没有两个相邻的元素总和为 4 你的 if(a[i] + a[j] == 4) 将永远不会被输入并且 i1 i2在循环结束时仍为0。

要将每个数组元素相互比较,您应该使用 2 个嵌套循环:

public static int addingNumbers(int[] a) {
int i1 = -1, i2 = -1;

for(int i = 0; i < a.length ; i++) {
for(int j = i+1; j < a.length ; j++) {
if(a[i] + a[j] == 4) { // index 0 and index 2 when added gives you a sum 4
i1 = i;
i2 = j;
}
}
}
if(i1>=0 && i2 >=0) {
System.out.println("The indices are " + i1 + " and " + i2);
}
return i1;
}

请注意,这只会打印出最后检测到的 2 个索引,加起来为 4。如果您希望能够检测到多个可能的解决方案并将它们打印出来,例如可以移动 System.out.println 进入 if block 。

关于java - 在数组中添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51307940/

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