2016-02-24 3 views
-3

Я новичок в Java и NetBeans.Я использую это исключение в NetBeans -> StringIndexOutOfBoundsException

Я сделал небольшой код (после учебника по youtube). Эта программа должна генерировать некоторые значения для кубика rubik, чтобы скремблировать. Я получаю исключение, а точнее StringIndexOutOfBoundsException Почему я получаю эту ошибку? И как я могу его обработать ... без «try, catch», потому что парень, который сделал учебник, не получил эту ошибку.

Может кто-нибудь мне помочь? Спасибо!

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; 
    } 
} 

Output

+0

Узнайте, как отлаживать. Исключения потрясающие - они говорят вам, что пошло не так и где. Просто вам понять, почему !. – John3136

+0

Я предполагаю 'm2.charAt (1) == m1.charAt (1) && m2.charAt (1) == m3.charAt (1)' должно быть с 0 всюду ... – Tunaki

ответ

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)) { 
Смежные вопросы