为了账号安全,请及时绑定邮箱和手机立即绑定

仅在声明最后一个数组时出现的神秘错误

仅在声明最后一个数组时出现的神秘错误

慕容3067478 2021-10-27 10:01:56
声明数组时,IDE (Eclipse) 给我一个错误。但是,如果我在之后立即声明另一个数组,错误就会像魔法一样转移到下一个数组。我可以尝试添加越来越多的数组,但我只会推迟不可避免的事情。这给我留下了两个问题:为什么会发生错误以及如何修复它?import java.util.Arrays; public class BattleshipGrid {    private char[][] arr1 = new char[10][10];    private char[][] arr2 = new char[10][10];    private char[][] arr3 = new char[10][10];     private char[][] arr4 = new char[10][10];//"Syntax error on token ";", { expected    for (char[] i: arr2) {        for(char j: i) {            i[j]='X';        }    }    public static void main (String[] args) {    }}
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

您的 for 循环必须驻留在某种方法中。


查看完整回答
反对 回复 2021-10-27
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

For 循环本身不能在一个类中。类只是声明的地方,而不是代码的地方。Java 中的代码仅在方法中。


所以你有2个解决方案。要么将您的代码放在main方法中:


import java.util.Arrays; 

public class BattleshipGrid {

    private static char[][] arr1 = new char[10][10]; // Made it static so that

         // it would be bound to the class object itself, so that you can see

         // it from the main method which is also static and bound to the class

         // object

    private static char[][] arr2 = new char[10][10];

    private static char[][] arr3 = new char[10][10]; 

    private static char[][] arr4 = new char[10][10];


    public static void main (String[] args) {

        for (char[] i: arr2) {

            for(char j: i) {

                i[j]='X';

            }

        }


    }

}

另一个(更好)的解决方案是在 main 方法中创建一个类的实例。


import java.util.Arrays; 

public class BattleshipGrid {

    private char[][] arr1 = new char[10][10];

    private char[][] arr2 = new char[10][10];

    private char[][] arr3 = new char[10][10]; 

    private char[][] arr4 = new char[10][10];


    public void initializeTheGrid() {

        for (char[] i: arr2) {

            for(char j: i) {

                i[j]='X';

            }

        }

    }



    public static void main (String[] args) {

        BattleshipGrid grid = new BattleshipGrid();

        grid.initializeTheGrid();

    }

}


查看完整回答
反对 回复 2021-10-27
?
长风秋雁

TA贡献1757条经验 获得超7个赞

尝试这样的事情:


public class BattleshipGrid

{

    private char[][] arr1 = new char[10][10];

    private char[][] arr2 = new char[10][10];

    private char[][] arr3 = new char[10][10]; 

    private char[][] arr4 = new char[10][10];


    public static void main ( String[] args )

    {

        for ( char[] i: arr2)

        {

            for ( char j: i)

            {

                j = 'X';

            }

        }

    }

}


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信