Java编译器不会进入我的for循环?

时间:2012-02-11 01:28:15

标签: java loops for-loop

我正在尝试编写一个应用程序,它将使用随机数填充数组。在我尝试在populateArray方法中输入for循环之前,一切似乎都能正常工作。

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 个答案:

答案 0 :(得分:7)

当然你的意思是你的循环测试是正确的吗?

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

否则,i == length永远不会成立(除非length == 0)并且永远不会进入循环。

您也可以使用:

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

答案 1 :(得分:1)

您应该在终止条件中写i<=length而不是i==length ...因为首先它将变量i作为0启动,然后检查终止条件({ {1}}就像你的情况一样),只有当它变为真时才会进入循环。

答案 2 :(得分:0)

我认为你打算写#34;我&lt;长度&#34;作为你的循环的条件。

答案 3 :(得分:0)

您的for循环条件不是您想要的。我&lt;长度是你可能想要的。

它也与java编译器无关。