2016-10-18 45 views
1

我有三類:Mazesolver,HexagonMaze。當我嘗試在Mazesolver類中創建一個Hexagon對象時,會發生錯誤。任何人都可以請幫我解決這個問題嗎?此外,在迷宮中獲得對開始Hexagon的引用意味着什麼?當參數超出範圍時,如何在另一個類中創建對象?

public class Hexagon extends HexComponent 
{ 
    // constants 
    private static final Color WALL_COLOR = Color.BLACK; 
    private static final Color START_COLOR = Color.GREEN; 
    private static final Color END_COLOR = Color.YELLOW; 
    private static final Color UNVISITED_COLOR = Color.CYAN; 
    private static final Color PROCESSED_COLOR = Color.BLUE; 
    private static final Color PUSHED_COLOR = Color.MAGENTA; 
    private static final Color END_PROCESSED_COLOR = Color.RED; 
    private static final Color START_PROCESSED_COLOR = Color.PINK; 

    //enum to represent available hexagon types 
    public static enum HexType{WALL, START, END, UNVISITED, PROCESSED, PUSHED,  END_PROCESSED, START_PROCESSED}; 

    // Attributes 
    private HexType type; // Stores the type of Hexagon this currently is 
    private boolean isStart; // Is this the start? 
    private boolean isEnd; // Is this the end? 
    private Hexagon[] neighbors; // Stores the hexagons which surround this one on each of 6 sides 

    /** 
    * Create a Hexagon tile of the specified type 
    * @param t the HexType to create 
    */ 
    public Hexagon(HexType t) { 
     this.type = t; 
     this.isStart = t == HexType.START; 
     this.isEnd = t == HexType.END; 

     //set the initial color based on the initial type 
     this.setColor(this.type); 
     //allocate space for the neighbor array 
     this.neighbors = new Hexagon[6]; 
    } 

如何在MazeSolver中創建一個Hexagon對象?

public class MazeSolver 
{ 
    public static void main (String[] args) { 
     try { 
      if (args.length < 1) { 
       throw new IllegalArgumentException("No Maze Provided"); 
      } 
      String maze0 = args[0]; 
      private ArrayStack<String> steps; 
      Hexagon Start = new Hexagon(t); //error 
     } 
+0

你的'ArrayStack'實例'steps'具有非法修飾符。你不能在方法中的局部範圍變量上使用'private'。此外,您未包含任何有關您所看到的錯誤類型的詳細信息。請將這些詳細信息添加到您的帖子。因爲,不可能說出哪些錯誤是由於錯誤的複製/粘貼與實際問題所致。 – nbrooks

回答

3

我沒有編碼大師,但也可能是因爲只有Hexagon構造函數需要你傳遞一個HexType值。我可能是錯的,但是我認爲問題在於,當t不是HexType值時,您將t傳入您的六角形構造函數中。您需要將其中的一個傳遞給您的Hexagon構造函數:HexType.WALL, HexType.START, HexType.END, HexType.UNVISITED, HexType.PROCESSED, HexType.PUSHED, HexType.END_PROCESSED, HexType.START_PROCESSED

編輯:所以是我認爲可以肯定地說你只需要通過HexType.VALUE到你的Hexagon構造函數中,VALUE是你的HexType枚舉類的任何值。

我是新來的StackOverFlow,請讓我知道如果我錯了,所以我可以刪除我的答案或至少糾正它。

+0

是的,@LeonelRamos我相信這是問題所在。 – gschambial

+0

@TedLaw你還可以發佈你的錯誤的StackTrace。 – gschambial

+0

當我將T更改爲START時,它說START不能解析爲變量。 –

0
 Hexagon Start = new Hexagon(t); //error 

向上述線一切是正確的,除了:

1)它可以是沒有限定,在使用它之前,首先定義爲六邊形。 2)它可能是你已經定義了t某處代碼,但必須是Hexagon,將其類型更改爲Hexagon。 3)如果你在兩點之上都做得正確,那麼你必須將Hexagon類導入MazeSolver。 lke:

import <Package>.HEXAGON; 
public class MazeSolver 
{ 
    public static void main (String[] args) { 
     try { 
      if (args.length < 1) { 
       throw new IllegalArgumentException("No Maze Provided"); 
      } 
      String maze0 = args[0]; 
      private ArrayStack<String> steps; 
      HexType t; // Change Here 
      Hexagon Start = new Hexagon(t); // No Error 
+0

當我將T更改爲HEX時 –

+0

當我將T更改爲HEXTYPE時。它說不能解決變量。現在該怎麼辦 –

+0

@TedLaw你知道什麼是HexType,請分享關於HexType –