Я иду это исключение в NetBeans -> StringIndexOutOfBoundsException
Я новичок в Java и NetBeans.
Я сделал небольшой код (после учебника на YouTube). Эта программа должна сгенерировать некоторые значения куба рубика для шифрования. Я получаю исключение, если быть более точным StringIndexOutOfBoundsException, почему я получаю эту ошибку? И как я могу относиться к этому... без "попробуй, поймай", потому что парень, который сделал урок, не получил эту ошибку.
Кто-нибудь может мне помочь? Спасибо!
import java.util.Random;
public class VideoScramble {
Random r = new Random(System.currentTimeMillis());
String [] moves = {"R", "L", "D", "U", "F", "B"};
String [] directions = {"", "'", "2"};
public static void main (String [] args ) {
VideoScramble kkk = new VideoScramble();
kkk.getScramble();
}
public void getScramble() {
String scramble = " ";
String move1 = " ";
String move2 = " ";
String direction = " ";
for (int i = 0; i< 25 ; i++) {
String currentMove = getMove(move1, move2);
direction = directions [r.nextInt(directions.length)];
scramble += currentMove.charAt(0) + direction;
move1 = move2;
move2 = currentMove;
}
System.out.println(scramble);
}
public String getMove (String m1, String m2) {
String move = moves[r.nextInt(moves.length)];
if (m2 == move || mesmoEixo(m1, m2, move) == true) {
return getMove(m1, m2);
}
return move;
}
public boolean mesmoEixo (String m1, String m2, String m3) {
if(m2.charAt(1) == m1.charAt(1) && m2.charAt(1) == m3.charAt(1) ) {
return true;
}
return false;
}
}
1 ответ
Решение
Индексирование отдельных символов в строках начинается с 0, измените эту строку
if (m2.charAt(1) == m1.charAt(1) && m2.charAt(1) == m3.charAt(1)) {
в
if (m2.charAt(0) == m1.charAt(0) && m2.charAt(0) == m3.charAt(0)) {