Как создать объект в другом классе, когда параметр выходит за рамки?
У меня есть три класса: 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