Компилятор Java не будет входить в мой цикл for? - PullRequest
2 голосов
/ 11 февраля 2012

Я пытаюсь написать приложение, которое будет заполнять массив случайными числами. Кажется, все работает нормально, пока я не попытаюсь ввести цикл for в моем методе populateArray.

import java.util.Random;

public class PerformanceTester {

//takes an empty array, but the size must be allocated BEFORE passing 
//to this function. Function takes a pre-allocated array and input size.
public static int[] populateArray(int[] inputArray, int n) {

    //Create the number generator
    Random generator = new Random();

    int length = inputArray.length;
    System.out.println("Inputted array is length: " + length);

    for (int i = 0; i == length; i++) {
        // for debugging purposes: System.out.println("For loop entered.");
        int random = generator.nextInt((2 * n) / 3);
        // for debugging purposes: System.out.println("Adding " + random + " to the array at index " + i);
        inputArray[i] = random;

    }
    return inputArray;
    }

public static void main(String[] args) {

    int[] input;
    input = new int[10];
    int[] outputArray = populateArray(input, 10);
    System.out.print(outputArray[0]);

}
}

Как показано в моих выходных данных, компилятор явно вводит метод (при вызове в строке 29), но, кажется, останавливает все выполнение при достижении цикла for. Я на 100% уверен, что мой цикл имеет правильные операторы инициализации и завершения, потому что длина равна десяти.

Я честно озадачен, но, как и в большинстве случаев, я уверен, что это очень простой ответ. Мой вывод ниже:

Inputted array is length: 10
0 //The array is not populated with numbers, so all indexes of the array return zero.

Любая помощь очень ценится.

Ответы [ 4 ]

7 голосов
/ 11 февраля 2012

Конечно, вы подразумевали, что ваш тест цикла был таким правильным?

for (int i = 0; i < length; i++) {

В противном случае, i == length никогда не будет истинным (если length == 0) и никогда не войдет в цикл.1007 * Вы также могли бы использовать:

for (int i = 0; i != length; i++) {
1 голос
/ 11 февраля 2012

вы должны написать i<=length вместо i==length в условии завершения ... потому что сначала он инициирует переменную i как 0, а затем проверяет условие завершения (i==length как в вашем случае),только если оно станет истинным, оно войдет в цикл.

0 голосов
/ 11 февраля 2012

Ваше условие цикла не то, что вы хотите. я <длина, что вы, вероятно, хотите. </p>

Также это не имеет никакого отношения к компилятору java.

0 голосов
/ 11 февраля 2012

Я думаю, что вы хотели написать "i

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