Как создать объект в другом классе, когда параметр выходит за рамки?

У меня есть три класса: Mazesolver, Hexagon, а также Maze, Когда я пытаюсь создать Hexagon объект в Mazesolver класс происходит ошибка. Может кто-нибудь, пожалуйста, помогите мне с этой проблемой? Кроме того, что значит получить ссылку на старт 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?

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
        }

2 ответа

Я не кодирую Гуру, но это может быть потому, что единственный Hexagon Конструктор требует от вас передать HexType значение. Я могу ошибаться, но я думаю, что проблема в том, что вы проходите мимо t в ваш конструктор шестиугольника, когда t это не HexType значение. Вам нужно передать один из них вашему конструктору 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, пожалуйста, дайте мне знать, если я ошибаюсь, чтобы я мог удалить свой ответ или хотя бы исправить его.

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

В строке выше все правильно, кроме:

1) это может быть t не определено, сначала определите t как шестиугольник перед его использованием.

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
Другие вопросы по тегам