Я использую ArrayList из ArrayLists для структуры данных, чтобы играть в игры с башнями ханой. Игра построена и инициализируется следующим образом:Как получить фактическое целочисленное значение из списка массивов
private ArrayList<ArrayList> lists = new ArrayList<ArrayList>();
private ArrayList<Integer> peg1 = new ArrayList<Integer>();
private ArrayList<Integer> peg2 = new ArrayList<Integer>();
private ArrayList<Integer> peg3 = new ArrayList<Integer>();
//Constructor
public TowersOfHanoi() {
lists.add(null);
lists.add(peg1);
lists.add(peg2);
lists.add(peg3);
}
public ArrayList initializeGame(int n) {
for (int i = 0; i < n; i++) {
peg1.add(i+1);
}
return peg1;
}
}
Я пытаюсь использовать булеву метод, чтобы сделать проверку и убедиться, что пользователь не пытается переместить больший диск на верхней части меньшего диска, однако , Я не понимаю, как бы захватить целочисленное значение, хранящееся в массиве. Целочисленные значения должны служить способом измерения диаметра дисков. И.Е. 1 меньше двух меньше 3 и т. Д. Это код, который я придумал ... Я считаю, что просто получаю индексы, а не фактические значения целых чисел, хранящихся там. Как я могу получить фактические значения?
public boolean isMoveLegal(int moveFrom, int moveTo){
ArrayList<Integer> fromPeg = lists.get(moveFrom);
int x = (fromPeg.remove(0)).intValue();
ArrayList<Integer> toPeg = lists.get(moveTo);
int y = (toPeg.get(0)).compareTo(x);
if(x<y){
System.out.println("illegal move");
}
return false;
}
Вы даже смотреть на Javadocs первым? –
Знаете ли вы, что ваш метод 'isMoveLegal()' всегда возвращает * false *? –
'remove' и' get' оба возвращают значения из списка, а не индексы. Как говорится в ответе, вы не устанавливаете 'y' значение из списка, потому что' compareTo' испортит его. Также: (1) Если у вас есть Integer, вы можете назначить его 'int', не используя' intValue() '. (Это называется auto-unboxing.) (2) Вместо 'ArrayList', используйте 'ArrayList >'. Вы не должны использовать общие типы (такие как 'ArrayList') без параметра типа (' Integer'), если это абсолютно необходимо. –
ajb