Я признаю, что эта проблема касается только моего кода, так как это ошибка времени выполнения, которая не дает мне результатов, на которые я надеялся. Я новичок в Java и пытаюсь сделать эту игру, которая предназначена для замены номера с пустым куском, чтобы соответствовать им в порядке 1,2,3,4, -, 5,6,7,8. Пока он работает, берет мой ввод за число, но не обновляет плату. Если я введу номер 1 в текстовое поле, он обновит доску, но ничего не изменится. Затем он попросит меня получить другое значение.Ошибка времени выполнения для 8-голосовой игры с головоломкой
import javax.swing.*;
public class EightPuzzle
{
public static void main(String[] args)
{
char[] grid={'1', '4', '3', '-', '6', '5', '2', '7', '8'};
char[] goal={'1', '2', '3', '4', '-', '5', '6', '7', '8'};
char move='9';
boolean isGoal=false;
while(!isGoal){
//***********GET MOVE START********************
int choice=-1;
boolean valid=false;
while(valid==false){
choice=JOptionPane.showInputDialog(getGridForOutput(grid) + "\nWhich tile do you wish to move? (1-8)").charAt(0);
if(choice<=8&&choice>=0&&grid[choice]!='-'){
move=(char)(choice);
valid=true;
}
}
//***********GET MOVE END***************************
//***********GET TILE LOCATION START***************************
int location=-1;
int i;
for(i=0;i<9;i++)
if(move==grid[i])
location=i;
//***********GET TILE LOCATION END***************************
//*********UPDATE START**************
char temp='0';
temp=(char)(location);
grid[temp]='-';
//***************GET LOCATION OF BLANK START*****************
int j=0;
for(i=0;i<9;i++)
if(grid[i]=='-')
j=i;
//***************GET LOCATION OF BLANK END*********************
grid[j]=move;
//*********UPDATE END***********
//****** IS GOAL START**********
if(grid[0]==goal[0]&&grid[1]==goal[1]&&grid[2]==goal[2]&&grid[3]==goal[3]&&grid[4]==goal[4]&&grid[5]==goal[5]&&grid[6]==goal[6]&&grid[7]==goal[7]&&grid[8]==goal[8])
isGoal=true;
//*******IS GOAL END**********
}
}
public static String getGridForOutput(char[] grid)
{
return ""+grid[0]+"\t "+grid[1]+"\t "+grid[2]+"\n"+grid[3]+"\t "+grid[4]+"\t "+grid[5]+"\n"+grid[6]+"\t "+grid[7]+"\t "+grid[8];
}
}
Tipp: Вы получите больше ошибок, потому что используете символы в качестве индексов. – Joachim