Здравствуйте, коллеги-разработчики!У меня есть этот метод для моей программы Java ниже.Он имеет 52 карты (вектор v), которые перетасовываются, и он должен печатать только те, у которых нет карты с тем же символом, следующим за ними (так что если его Q сердец, то Король червей, он должен пропустить Король червей), его работакак и должно быть, но я получаю:
Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: индекс массива вне диапазона: 52 в java.util.Vector.get (Vector.java:748) at cardgame.Cardgame.shufflenosamebefore (Cardgame.java:507)
(507 - это строка if (v.get(i).getsymbol() != v.get(i + 1).getsymbol()) {
)
public void shufflenosamebefore() {
Collections.shuffle(v);
for (i = 0; i < v.size(); i++) {
if (v.get(i).getsymbol() != v.get(i + 1).getsymbol()) {
if (v.get(i).getsymbol() == 'T') {
v.get(i).setsymbol('♣');
}
if (v.get(i).getsymbol() == 'P') {
v.get(i).setsymbol('♠');
}
if (v.get(i).getsymbol() == 'C') {
v.get(i).setsymbol('♦');
}
if (v.get(i).getsymbol() == 'H') {
v.get(i).setsymbol('♥');
}
if (v.get(i).getnumber() == 11) {
System.out.println("Card n." + (i + 1) + " is J " + v.get(i).getsymbol());
} else if (v.get(i).getnumber() == 12) {
System.out.println("Card n." + (i + 1) + " is Q " + v.get(i).getsymbol());
} else if (v.get(i).getnumber() == 13) {
System.out.println("Card n." + (i + 1) + " is K " + v.get(i).getsymbol());
} else if (v.get(i).getnumber() == 0 || v.get(i).getnumber() == 1) {
System.out.println("Card n." + (i + 1) + " is A " + v.get(i).getsymbol());
} else {
System.out.println("Card n." + (i + 1) + " is " + v.get(i).getnumber() + " " + v.get(i).getsymbol());
}
}
}
}
Любой ввод, почему он дает мне эту ошибкуа сборка не удалась?Большое спасибо!