【发布时间】:2016-04-18 17:11:16
【问题描述】:
我的代码的一部分,您可以在其中玩一个谜题,将一个打乱的 4x4 数字数组重新调整回其原始状态。用户输入某些命令,例如第 0 行第 1 行,一个循环执行命令,打印最新的拼图,然后请求命令,当拼图与拼图的原始状态匹配时应该结束。当回到原始拼图时,我的循环永远不会中断,并且即使输入了正确的输入,也会不断打印无效输入。我该如何解决这些问题? 这只是代码的播放方法部分
static void play(int[][] puzzle) {
reset(puzzle);
int[][] z = new int[N][N];
reset(z);
print(puzzle);
for (int i = 0; i < 5; i++) {
randomRotation(puzzle);
}
print(puzzle);
while (puzzle!=z) {
System.out.println("enter row x or col x: ");
Scanner input = new Scanner(System.in);
String x = input.nextLine();
if (!x.equals("row 0") || !x.equals("row 1") ||!x.equals( "row 2") ||!x.equals( "row 3") ||!x.equals( "col 0") ||!x.equals( "col 1") ||!x.equals( "col 2") ||!x.equals("col3")) {
System.out.println("invalid input");
}
if (x.equals("row 0")) {
rotateRow(puzzle, 0);
print(puzzle);
}
if (x.equals("row 1")) {
rotateRow(puzzle, 1);
print(puzzle);
}
if (x.equals("row 2")) {
rotateRow(puzzle, 2);
print(puzzle);
}
if (x.equals("row 3")) {
rotateRow(puzzle, 3);
print(puzzle);
}
if (x.equals("col 0")) {
rotateColumn(puzzle, 0);
print(puzzle);
}
if (x.equals("col 1")) {
rotateColumn(puzzle, 1);
print(puzzle);
}
if (x.equals("col 2")) {
rotateColumn(puzzle, 2);
print(puzzle);
}
if (x.equals("col 3")) {
rotateColumn(puzzle, 3);
print(puzzle);
}
}
}
【问题讨论】:
-
"row 0" is not "row 1" and "row 1" is not "row 0" 我建议你使用 switch 语句来组合所有这些检查。