Алгоритм поиска - Java - PullRequest
       1

Алгоритм поиска - Java

0 голосов
/ 27 сентября 2011

Мне немного трудно заставить алгоритм поиска работать должным образом в Java.По сути, программа имеет инициализированный массив.Предполагается, что пользователь вводит число через клавиатуру, а Java распечатывает все индексы, где этот номер найден.Моя основная проблема заключается в том, что я хочу создать метод, который в настоящее время выглядит следующим образом:

    public static int[] linsearch(int[] numbers, int key) {
        int[] indexvalues = null;
        int n = 0;
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == key) {
                indexvalues[n] = i;
                n++;}
        }

        return indexvalues;
    }

Идея, лежащая в основе этого, состоит в том, что дан массив и число (в данном случае идентифицируется как «ключ»).), программа создаст новый массив, в котором будут сохранены индексы, где найден номер «ключ» в исходном массиве.В настоящее время я получаю это сообщение об ошибке: java.lang.NullPointerException.Я пробовал разные подходы к инициализации этого массива, но пока что ни один из них не был успешным.Таким образом, любая помощь будет очень признательна!

1 Ответ

3 голосов
/ 27 сентября 2011

Основная трудность связана с тем, что вы заранее не знаете размер выходного массива. С другой стороны, растущий массив Java по мере необходимости выполним, но неприятен.

Есть несколько способов исправить это.

На вашем месте я бы использовал коллекцию для хранения индексов:

public static Collection<Integer> linsearch(int[] numbers, int key) {
    ArrayList<Integer> indexvalues = new ArrayList<Integer>();
    for (int i = 0; i < numbers.length; i++) {
        if (numbers[i] == key) {
            indexvalues.add(i);
        }
    }
    return indexvalues;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...