Этот код продолжает возвращать 0 вместо увеличения в размере? - PullRequest
1 голос
/ 19 октября 2011

То, что я пытаюсь сделать, это:

Запрашивает у пользователя размер списка (например, N = 10000). Создайте ArrayList из целых чисел от 1 до N в случайном порядке.

Это то, что у меня пока есть, но список просто возвращает число 0 n раз

System.out.print("Please enter a list size: ");
       Scanner ST = new Scanner(System.in);
        int n= ST.nextInt();
        List<Integer> myList = new ArrayList<Integer>(n);
        for ( int i = 1; i<(n+1); i++){
            int k = 0;
            k = k + 1;
            myList.add(k);

        }

1 Ответ

7 голосов
/ 19 октября 2011

Да, потому что вы объявляете k внутри цикла. Просто двигайся

int k = 0;

до до цикла. В настоящее время «вновь объявленной» переменной будет присвоено значение 0 в первой строке каждой итерации цикла; затем он будет увеличен до 1 на следующей строке. Затем это значение (1) будет упаковано, а возвращаемое значение Integer.valueOf(1) будет добавлено в список. Тогда мы снова обходим ...

Альтернативой является просто использование индекса цикла - потенциально изменяя цикл на более идиоматический стиль одновременно:

for (int i = 0; i < n; i++) {
    myList.add(i + 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...