Как распечатать индексы ответа? - PullRequest
0 голосов
/ 26 марта 2020

Я искал индексы суммы двух значений, равных целевому числу. Ожидаемый результат этой программы - {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");
}

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вам необходимо преобразовать результат в строку. int[] не может быть напечатано напрямую

System.out.println(Arrays.toString(twoSum(a, 9)));
0 голосов
/ 26 марта 2020

Массив - это отдельный объект, и простой вывод текста этого объекта не имеет ничего общего с его содержимым. Вместо этого вы можете использовать метод StringBuilder или Arrays.toString.

StringBuilder:

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);
...