Java中的局部变量,“死代码”和2D数组问题

时间:2013-02-10 11:17:23

标签: java arrays local

我在使用Java开发以下代码时遇到了一些问题:

setPos(x, y);
for (int i = 0; x < size; i++) {
    for (int j = 0; y < size; j++) {
        if (board[x][y] == 'K')
        {
            System.out.println("You've found a key! CONGRATS!");
            return true;
        }

Eclipse注意到ij作为局部变量,它们未被使用:The value of the local variable i is not used。如果我更改了i并写了x,它会告诉我我正在重复变量。

j++被标记为dead code

另外,我必须在二维数组的对角线上搜索具体类型的元素,我一直尝试使用2 for for循环,如上所述,但还没有结果。

希望你能提前帮助我!

4 个答案:

答案 0 :(得分:0)

看看这个:

setPos(x, y);
        if (board[x][y] == 'K')  //no i or j so they are unused. 
        {
            System.out.println("You've found a key! CONGRATS!");
            return true;
        }

If I change the i and write the x instead, it tells me that I'm repeating the variable.

因为x已经是变量(你的函数参数)。所以你不能再声明它。

dead code:对程序没有影响的代码。Dead code


注意:这不是你问题的解决方案(因为我不知道)。它只是告诉你错误。

答案 1 :(得分:0)

  

Eclipse注意到我ij作为局部变量,它们没有被使用

那是因为你没有使用它们。您已经为它们分配了值,并且您之后已经增加(添加到)这些值,但您从未使用它们。

  

j++被标记为“死代码”(?)

出于同样的原因,代码会增加j的值,但永远不会使用j,因此代码不执行任何操作。 “死代码”是指没有目的或永不运行的代码。


你的循环没有多大意义。例如:

for (int i = 0; x < size; i++) {

通常使用for循环,控件变量(在这种情况下为i)应出现在{{1>}语句的所有三个部分中(初始化器,测试和增量),如下所示:

for

但是你没有这样做,你只是在初始化器和增量中使用for (int i = 0; i < size; i++) { // Change here -^ ,从不在测试中使用i。使用x < size的循环也是如此。

同样地,除非某些内容改变jx和/或y的值,否则您的循环将永远不会运行(因为size或{{ 1}}已经x),运行一次(因为它发生在y),或者它们将永远运行(因为>= size或{{1是} board[x][u] == 'K',因为没有任何改变,他们只是继续循环......)。

答案 2 :(得分:0)

Eclipse正在为您提供错误所在的提示:

for (int i = 0; x < size; i++) {
    for (int j = 0; y < size; j++) {

您迭代ij,但您指定x < sizey < size作为条件。因此,您实际上从未使用ij值,因此j++i++是死代码。

如果你真的想使用循环,你应该使用你在for循环条件中用于迭代的变量:

for (int i = 0; i < size; i++) { // i instead of x
    for (int j = 0; j < size; j++) { // j instead of y

答案 3 :(得分:0)

  

另外,我必须在二维数组的对角线上搜索具体类型的元素,我一直尝试使用2 for for循环,如上所述,但还没有结果。

为什么不使用单个for循环,如下所示:

for(int i = 0; i< size; i++)
    if(board[i][i] == 'K')
    {
        System.out.println("You've found a key! CONGRATS!");
        return true;
    }