1

我不知道我的代码有什么问题,它不会编译,因为编译器找不到变量 k。

我的代码:

public class t
{
    public static void main(String args[])
    {
        int r = 10;
        int c = 10;

        char[][] map = new char[r][c];

        for(int i = 1; i < (r - 1); i++)
        {
            for(int k = 1; k < (c - 1); k++);
            {
                map[i][k] = '$';
            }
        }
    }
}

它给我的错误:

  symbol:   variable k
  location: class t
  1 error

我一直认为这是一个范围问题,但是variable k在嵌套的 for 循环内,所以应该没问题吧?

4

7 回答 7

4

您的“k” for 循环末尾有一个分号;去掉它。改变

for(int k = 1; k < (c - 1); k++);
{
    map[i][k] = '$';
}

for(int k = 1; k < (c - 1); k++)
{
    map[i][k] = '$';
}
于 2013-02-15T23:29:21.673 回答
3

您的代码中有一个小错误:

for(int k = 1; k < (c - 1); k++);

最后不应该有分号。

于 2013-02-15T23:30:49.490 回答
2

在第二个循环结束时使用分号,将其删除,这将有助于您的事业

for(int k = 1; k < (c - 1); k++);
                                ^
于 2013-02-15T23:31:17.777 回答
1

这是因为在下一行的末尾有额外的分号......

for(int k = 1; k < (c - 1); k++)
于 2013-02-15T23:29:22.743 回答
1
for(int k = 1; k < (c - 1); k++);

放下;


阐述:

;实际上是一个在 Java 中有效的空语句:

Foo f = new Foo();
;
f.doSomething();

在 Java 中,您可以使用不带花括号的控制语句{ },例如:

if(booleanFlag) doSomething();
else doSomethingElse();

// ...

for(String s : stringArray) System.out.println(s);

这就是您在代码中使用的内容:

for(int k = 1; k < (c - 1); k++); // iterate on the empty statement

然后,您打开了一个与 for 循环无关的新代码块:

{
    map[i][k] = '$';
}

只执行一次。

于 2013-02-15T23:29:26.043 回答
1

for loop您在初始化的末尾有一个分号k- 删除它,您应该没问题!

于 2013-02-15T23:29:30.583 回答
1

for在第二个循环之后删除分号。

分号是合法的语句,称为空语句;这意味着“什么都不做”。

于 2013-02-15T23:30:05.047 回答