私のコードの一部で、シャッフルされた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);
}
}
}
「行0」は「行1」ではなく、「行1」は「行0」ではありません。これらのすべてのチェックを組み合わせるにはswitch文を使用することをお勧めします。 –