Java 8块拼图游戏的运行时错误
我承认,这个问题只与我的代码有关,因为它是一个运行时错误,没有给出我所希望的结果。我对java更新了,尝试制作这个游戏,用一个空白的数字交换一个数字,以便在顺序1,2,3,4,-5,6,7,8中匹配它们。到目前为止,它运行,接受我输入的数字,但不刷新电路板。如果我在文本框中输入数字1,它将刷新电路板,但电路板上没有任何更改。然后它继续向我请求另一个值Java 8块拼图游戏的运行时错误,java,swing,Java,Swing,我承认,这个问题只与我的代码有关,因为它是一个运行时错误,没有给出我所希望的结果。我对java更新了,尝试制作这个游戏,用一个空白的数字交换一个数字,以便在顺序1,2,3,4,-5,6,7,8中匹配它们。到目前为止,它运行,接受我输入的数字,但不刷新电路板。如果我在文本框中输入数字1,它将刷新电路板,但电路板上没有任何更改。然后它继续向我请求另一个值 import javax.swing.*; public class EightPuzzle { public static void
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];
}
}
import javax.swing.*;
公共八级
{
公共静态void main(字符串[]args)
{
char[]grid={'1','4','3','-','6','5','2','7','8'};
char[]目标={'1','2','3','4','-','5','6','7','8'};
char move='9';
布尔值isGoal=false;
而(!isGoal){
//***********开始行动********************
int-choice=-1;
布尔有效=假;
while(valid==false){
choice=JOptionPane.showInputDialog(getGridForOutput(grid)+“\n要移动哪个磁贴?(1-8)”)。字符(0);
如果(选项=0&&grid[choice]!='-'){
移动=(字符)(选择);
有效=真;
}
}
//***********结束***************************
//***********获取平铺位置开始***************************
int位置=-1;
int i;
对于(i=0;i您的错误是计算用户输入的第一个字符的整数代码。
将整个输入与Integer.valueOf(输入)一起使用,以获取用户输入的int表示形式
String choiceText=JOptionPane.showInputDialog(getGridForOutput(grid) + "\nWhich tile do you wish to move? (1-8)");
int choice = Integer.parseInt(choiceText);
您的错误是计算用户输入的第一个字符的整数代码。
将整个输入与Integer.valueOf(输入)一起使用,以获取用户输入的int表示形式
String choiceText=JOptionPane.showInputDialog(getGridForOutput(grid) + "\nWhich tile do you wish to move? (1-8)");
int choice = Integer.parseInt(choiceText);
其他答案是正确的。您接收的输入是字符,但正在测试其整数值。您可以通过添加System.out.println
来测试这一点,以查看if
语句之前的选择值
您可以做的两件事是通过使用integer.parseInt()
获取整数值,或者通过编写以下命令直接操作选择:
选项-=48;
或
choice-='0';
其他答案是正确的。您接收的输入是字符,但正在测试其整数值。您可以通过添加System.out.println
来测试这一点,以查看if
语句之前的选择值
您可以做的两件事是通过使用integer.parseInt()
获取整数值,或者通过编写以下命令直接操作选择:
选项-=48;
或
choice-='0';
Tipp:您将得到更多错误,因为您使用字符作为索引。Tipp:您将得到更多错误,因为您使用字符作为索引。