2013-02-10 49 views
0

“死码”和二维数组的问题我有在开发Java中下面的代码有几个问题:局部变量,在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循环,同上,但没有结果呢。

希望你能帮助我,在此先感谢!

+2

你的退出条件'如果(板[X] [Y] == 'K')'不依赖于'i'或'j' ... – assylias 2013-02-10 11:18:47

回答

0

的Eclipse注意到我,ij,局部变量,它们不习惯

那是因为你不使用它们的。您分配他们的价值观,和你后来增加(增加)的值,但是你从来没有使用他们任何东西。

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

出于同样的原因,代码递增的j的价值,但从未使用过j,所以代码什么也不做。 “死代码”是指没有目的或从未运行的代码。


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

for (int i = 0; x < size; i++) { 
for循环,(在这种情况下 i)控制变量应出现在

通常所有三个for声明的部分(初始化,测试,和增量)的 ,是这样的:你不这样做,你只使用在初始化和增量i,从来没有在测试(x < size

for (int i = 0; i < size; i++) { 
// Change here -^ 

不过。您的循环与j同样如此。

同样地,除非有一些改变xy值,和/或size,那么你的循环要么永远不会运行(因为xy已经>= size),一旦运行(因为它发生board[x][u] == 'K') ,或者他们会永远运行(因为xy< size,因为没有任何变化,他们只是继续循环...)。

+0

我刚刚在方法内部包含了条件,所以x和y不能大于size,所以for循环不再需要。非常感谢! – Niconoid 2013-02-10 11:44:16

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


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

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 
0

而且,我必须寻找一个具体类型的元素在二维数组的对角线上,我一直在用2 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; 
    }