-4

我对 int 板有 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;
    }
}

第一行和第二行打印等于 480 360 0 0,下一个打印等于 0 0 30 360 我需要 480 360 480 360 请帮助。

4

2 回答 2

0

除了 element 之外,您不会将值放入数组的任何元素中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;
 }
于 2013-09-27T22:37:45.260 回答
0

整数 [] 数字 = 新整数 [5]; .. System.out.println(数字[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; Y[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。

于 2013-09-27T22:45:27.817 回答