Java,使用对象数组的操作

时间:2016-04-16 16:29:46

标签: java arrays class object

我想将播放器的数据和字段的数据存储在两个对象数组中。问题是我需要在不同的类中使用它们。在我最初创建它不是问题的类中,但是当我尝试在另一个类中调用它时,它会抛出“board[i]无法解析为变量”。

我写的代码有点类似于:

class Field {
    int something;
    int another;

    public void setMethod(int something){
        this.something = something;
    } 

    //etc. 
}

class Board {
public static Field[] board = new Field[60];

    public void BoardFiller(){
        for(int i = 0; i < board.length; i++){
            board[i] = new Field(/*construct*/);
            //etc.
        }
    }
}

class Gameplay {
    public boolean Attackable() {
        boolean atk = false;

        //stuff
        int something = board[i].getMethod();
        //more stuff
        return atk;
    }
}

等等。我必须使用Field数据来检查它是否可以访问,在I / O部分的转弯中使用它。 问题与播放器数据相同。

5 个答案:

答案 0 :(得分:0)

第1步:从static变量

中删除board修饰符

第2步:将public Board board = new Board();字段添加到Gameplay

第3步:使用board.board[...]访问Gameplay

中的字段

答案 1 :(得分:0)

就像你使用新的Field()创建了一个场对象一样,你需要在你的游戏类中创建一个棋盘对象才能使用那里的方法。

Board myBoard = new Board();

答案 2 :(得分:0)

您尚未在board方法或Attackable类的范围内定义Gameplay变量。要访问board变量,您必须通过执行Field.Board.board来访问它。而不只是board

答案 3 :(得分:0)

在GamePlay课程中,你必须循环在棋盘上。类似于(Field f:new Board()。board)//做某事

答案 4 :(得分:0)

代码是完全错误的,它甚至不会编译你不允许创建 内部类中外部类的静态数组

  

内部类是一个非显式或隐式的嵌套类   声明静态。内部类可能不会声明静态初始化器   或成员接口。内部类可能不会声明静态   成员,除非它们是编译时常量字段

你应该得到一个编译错误,你可以通过使你的字段类静态来解决这个问题。