板等于0

时间:2013-09-27 22:35:46

标签: java int

我对int board有1个问题。 当我在while循环中添加一个新int时,所有int都等于0。

public class Enemy extends Render {
    private int X[] = new int[64];
    private int Y[] = new int[64];
    private int i = 1;
    public Enemy(int x, int y, int num1, int num2) { 
        //x = 480, y = 360, num2 = 2
        X[num1-1] = x;
        Y[num1-1] = y;
        while(i <= num2) {
            System.out.println(X[0]+" "+Y[0]+" "+X[1]+" "+Y[1]);
            i++;
        }
        i = 1;
    }
}

第1行和第2行打印等于480 360 0 0,接下来打印等于0 0 30 360 我需要480 360 480 360帮助。

2 个答案:

答案 0 :(得分:0)

除了元素num1-1之外,您不会将值放入数组的任何元素中。

您的if应该是while吗?

你在哪里:

X[num1-1] = x;
Y[num1-1] = y;

你需要更像的东西:

for(int i=0;i<X.length;i++){
    X[i] = x;
    Y[i] = y;
 }

答案 1 :(得分:0)

int [] numbers = new int [5]; .. System.out.println(numbers [0]);这也会打印0。默认情况下,没有设置值的整数数组将为0。

如果您收到x = 480, y = 360, num2 = 2(我们不知道num1),请假设num1 = 1

X[num1-1] = x;
Y[num1-1] = y;

这将是

X [1-1] = x; // X [0] = 480 Y [1-1] = y; // Y [0] = 360

现在...

   while(i <= num2) {
        System.out.println(X[0]+" "+Y[0]+" "+X[1]+" "+Y[1]);
        i++;
    }

在这里,无论i是什么,你总是打印相同的值,所以如果你还没有为这些元素设置一个值,那么它们总是为0。

在那里你将打印480,360然后是0,0,因为你只有位置0的数组的设置值。位置1中的那些尚未设置,默认为0。

我不知道你的意思是:next output equals 0 0 30 360

但也许你想要这样的东西......

...

//如果num1为1,那么它将用X填充X [0]和X [1]。         X [num1-1] = x;         是[num1-1] = y;

    X[num1] = x;
    Y[num1] = y;
..
           // Out of bounds risky here, make sure you have enough elements before calling i+1 index.
            System.out.println(X[i]+" "+Y[i]+" "+X[i+1]+" "+Y[i+1]);
...

但请确保不会导致出界。

现在,如果您发送了num1 = 2,那么

X[2-1] = x; //X[1] = 480
Y[2-1] = y; //Y[1] = 360

您没有为索引为0的元素设置值,因此它将保留默认值0。