Я иду это исключение в 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)) {
Другие вопросы по тегам