【问题标题】:unknown error for array of objects对象数组的未知错误
【发布时间】:2013-11-16 04:41:01
【问题描述】:

我正在制作一个玩 pacman 的程序并有几个课程,我有一个 Wall 课程、一个 Goast 课程、一个 Pacman 课程、一个 Pellot 课程和一个 Board 课程。除了板子之外,所有这些都编译没有错误,它不完整但我所拥有的没有编译, 我有的是

import java.awt.*;
import javax.swing.*;
public class Board{
    private int xDim_=1000;
    private int yDim_=900;
    private Pacman pacman_=new Pacman(475,525,0);
    private Goast greenredGoast_=new Goast(525,350,2,Color.RED);
    private Goast onageGoast_=new Goast(525,275,1, Color.ORANGE);
    private Goast pinkGoast_=new Goast(425,350,2,Color.MAGENTA);
    private Goast blueGoast_=new Goast(425,275,0,Color.CYAN);
    Wall[] walls = new Wall[22];
    walls[0]=new Wall(50,850,900,50);  
    walls[1]=new Wall(0,0,50,900);
    walls[2]=new Wall(50,0,900,50);
    walls[3]=new Wall(125,125,50,150);

我在创建新墙的每个条目上都有 100 个错误,错误如下:

 walls[0]=new Wall(50,850,900,50);  
          ^
Board.java:12: error: ';' expected
    walls[0]=new Wall(50,850,900,50);  
           ^
Board.java:12: error: illegal start of type
    walls[0]=new Wall(50,850,900,50);  
            ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
             ^
Board.java:12: error: ';' expected
    walls[0]=new Wall(50,850,900,50);  
                ^
Board.java:12: error: illegal start of type
    walls[0]=new Wall(50,850,900,50);  
                     ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
                      ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
                         ^
Board.java:12: error: illegal start of type
    walls[0]=new Wall(50,850,900,50);  
                            ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
                             ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
                                 ^
Board.java:12: error: illegal start of type
    walls[0]=new Wall(50,850,900,50);  
                                   ^
Board.java:12: error: <identifier> expected
    walls[0]=new Wall(50,850,900,50);  
                                    ^
Board.java:12: error: ';' expected
    walls[0]=new Wall(50,850,900,50);  
                                     ^

我为每一面墙都做到了这一点。我不知道出了什么问题有人请帮忙!!谢谢

【问题讨论】:

  • Wall 类是什么样的?

标签: java arrays class compiler-errors


【解决方案1】:

您不能在类级别调用walls[0]=new Wall(50,850,900,50);

public class Board{
    ...
    Wall[] walls = new Wall[22];
    walls[0]=new Wall(50,850,900,50);
    walls[1]=new Wall(0,0,50,900);
    ...
}

您需要将其放置在以下任一位置:

初始化块,

public class Board{
    ...
    Wall[] walls = new Wall[22];
    {
        walls[0]=new Wall(50,850,900,50);
        walls[1]=new Wall(0,0,50,900);
        ...
    }
    ...
}

构造函数

public class Board{
    ...
    Wall[] walls = new Wall[22];

    public Board(){
        walls[0]=new Wall(50,850,900,50);
        walls[1]=new Wall(0,0,50,900);
        ...
    }
    ...
}

或一些方法

public class Board{
    ...
    Wall[] walls = new Wall[22];

    public void fillBoard(){
        walls[0]=new Wall(50,850,900,50);
        walls[1]=new Wall(0,0,50,900);
        ...
    }
    ...
}

【讨论】:

    【解决方案2】:

    假设您只需要一个墙数组,那么我可能会使用静态块来初始化我的墙数组,就像这样 -

    private static Wall[] walls = new Wall[22];
    
    static {
      walls[0]=new Wall(50,850,900,50);  
      walls[1]=new Wall(0,0,50,900);
      walls[2]=new Wall(50,0,900,50);
      walls[3]=new Wall(125,125,50,150);
      ...
    }
    

    【讨论】:

      【解决方案3】:

      创建一个方法并将您的数组代码放入其中 以下代码将起作用

      import java.awt.*;
      import javax.swing.*;
      public class Board{
          private int xDim_=1000;
          private int yDim_=900;
          private Pacman pacman_=new Pacman(475,525,0);
          private Goast greenredGoast_=new Goast(525,350,2,Color.RED);
          private Goast onageGoast_=new Goast(525,275,1, Color.ORANGE);
          private Goast pinkGoast_=new Goast(425,350,2,Color.MAGENTA);
          private Goast blueGoast_=new Goast(425,275,0,Color.CYAN);
      
          public void run() { // create a method
          Wall[] walls = new Wall[22];
          walls[0]=new Wall(50,850,900,50);  
          walls[1]=new Wall(0,0,50,900);
          walls[2]=new Wall(50,0,900,50);
          walls[3]=new Wall(125,125,50,150);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 2022-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-04
        相关资源
        最近更新 更多