Java 我同意这个例外->;StringIndexOutOfBoundsException

Java 我同意这个例外->;StringIndexOutOfBoundsException,java,string,exception,Java,String,Exception,我不熟悉Java和NetBeans 我已经做了一些代码(在youtube上的教程之后)。这个程序应该为魔方生成一些值以进行置乱。我得到了一个异常,更准确地说是StringIndexOutOfBoundsException为什么我会得到这个错误?我该如何治疗它。。。没有“try,catch”,因为做教程的人没有犯这个错误 有人能帮我吗? 谢谢大家! import java.util.Random; public class VideoScramble { Random r = new Rand

我不熟悉Java和NetBeans

我已经做了一些代码(在youtube上的教程之后)。这个程序应该为魔方生成一些值以进行置乱。我得到了一个异常,更准确地说是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;
    }
}
import java.util.Random;
公共类视频加扰{
Random r=新的Random(System.currentTimeMillis());
字符串[]移动={“R”、“L”、“D”、“U”、“F”、“B”};
字符串[]方向={“”,“2”};
公共静态void main(字符串[]args){
VideoScramble kkk=新的VideoScramble();
kkk.getScramble();
}
public-void-getScramble(){
字符串加扰=”;
字符串move1=“”;
字符串move2=“”;
字符串方向=”;
对于(int i=0;i<25;i++){
字符串currentMove=getMove(move1,move2);
方向=方向[r.nextInt(方向.长度)];
扰码+=当前移动字符(0)+方向;
move1=move2;
move2=当前移动;
}
系统输出打印LN(加扰);
}
公共字符串getMove(字符串m1、字符串m2){
字符串移动=移动[r.nextInt(moves.length)];
如果(m2==move | | mesmoEixo(m1,m2,move)==true){
返回getMove(m1,m2);
}
回击动作;
}
公共布尔mesmoEixo(字符串m1、字符串m2、字符串m3){
如果(m2字符(1)=m1字符(1)和m2字符(1)=m3字符(1)){
返回true;
}
返回false;
}
}

为字符串中的单个字符编制索引是基于0的,请更改此行

if (m2.charAt(1) == m1.charAt(1) && m2.charAt(1) == m3.charAt(1)) {


学习如何调试。异常是惊人的——它们告诉你哪里出了问题,哪里出了问题。由你来决定原因吧!。我猜
m2.charAt(1)==m1.charAt(1)和&m2.charAt(1)==m3.charAt(1)
应该到处都是0。。。
if (m2.charAt(0) == m1.charAt(0) && m2.charAt(0) == m3.charAt(0)) {