局部变量,在Java
“死码”和二维数组的问题我有在开发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注意到我,i
和j
,局部变量,他们没有被使用:The value of the local variable i is not used
。如果我改变i
,写x
相反,它告诉我,我不停地重复变量。
j++
被标记为dead code
?
另外,我有搜索在对角线上一个二维数组的具体类型的元素,我一直在尝试2这个for循环,同上,但没有结果呢。
希望你能帮助我,在此先感谢!
的Eclipse注意到我,
i
和j
,局部变量,它们不习惯
那是因为你不使用它们的。您分配他们的价值观,和你后来增加(增加)的值,但是你从来没有使用他们任何东西。
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
同样如此。
同样地,除非有一些改变x
,y
值,和/或size
,那么你的循环要么永远不会运行(因为x
或y
已经>= size
),一旦运行(因为它发生board[x][u] == 'K'
) ,或者他们会永远运行(因为x
或y
是< size
,因为没有任何变化,他们只是继续循环...)。
我刚刚在方法内部包含了条件,所以x和y不能大于size,所以for循环不再需要。非常感谢! – Niconoid 2013-02-10 11:44:16
看看这个:
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
注:这不是你的问题的解决方案(因为我不知道)。这只是为了告诉你这个错误。
Eclipse是给你一个提示错误所在:
for (int i = 0; x < size; i++) {
for (int j = 0; y < size; j++) {
您遍历i
和j
,但你指定x < size
和y < size
作为条件。因此,你永远不会使用i
和j
的值,因此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
而且,我必须寻找一个具体类型的元素在二维数组的对角线上,我一直在用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;
}
你的退出条件'如果(板[X] [Y] == 'K')'不依赖于'i'或'j' ... – assylias 2013-02-10 11:18:47