如何打印出答案的索引?

How to print out the indices of the answer?

我正在寻找两个值之和等于目标数的索引。该程序的预期输出是 {0,1},但我从以下代码中得到了 [I@1b6d3586。

我知道方法调用可能有问题,但我不知道如何解决。

public static void main(String[] args) {

    int[] a = {2, 7, 9, 11};
    System.out.println(twoSum(a, 9));

}

public static int[] twoSum(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[i] + arr[j] == target) {
                return new int[]{i, j};
            }
        }
    }
    throw new IllegalArgumentException("No two sum solution");
}

您需要将结果转换为字符串。 int[]无法直接打印

System.out.println(Arrays.toString(twoSum(a, 9)));

数组是一个单独的对象,该对象的纯文本输出与其内容无关。您可以改用 StringBuilder 或 Arrays.toString 方法。

字符串生成器:

int[] ints = new int[] {2, 3};

char separator = ' ';
StringBuilder builder = new StringBuilder();

for (int anInt : ints) {
  builder.append(anInt).append(separator);
}

Arrays.toString:

int[] ints = new int[] {2, 3};

String arrayAsString = Arrays.toString(ints);