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

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

for2 番目のループの後のセミコロンを削除します。

セミコロンは null ステートメントと呼ばれる正当なステートメントです。それは「何もしない」ということです。

于 2013-02-15T23:30:05.047 に答える