'play' 我的部分拼图没有 return 任何东西
'play' part of my puzzle doesn't return anything
我的拼图的 play 部分没有 return 任何东西,我在其他有效的领域使用了类似的代码。我没有收到任何错误,所以我不知道出了什么问题,我试过使用“==”并单独输出拼图,但还是没有任何反应。任何帮助都会有用。谜题也应该使用循环,当谜题被解决时游戏应该结束,但我不确定前后使用什么,这里的任何帮助也会很有用。
package assignment;
import java.util.Scanner;
import static java.util.Scanner.*;
public class puzzle {
public static final int N = 4;
public static final int NUMBER_OF_ROTATIONS = 5;
public static void main(String[] args) {
int[][] puzzle = new int[N][N];
reset(puzzle);
test(puzzle);
reset(puzzle);
scramble(puzzle);
System.out.println("### Testing puzzle game play\n");
play(puzzle);
}
public static void print(int[][] puzzle) {
for (int[] row : puzzle) {
for (int elem : row) {
System.out.printf("%4d", elem);
}
System.out.println();
}
System.out.println();
}
public static void test(int[][] puzzle) {
System.out.println("### Testing reset method\n");
print(puzzle);
System.out.println("### Testing rotate methods\n");
print(puzzle);
for (int i = 0; i < N; i++) {
System.out.println("### rotateColumn(" + i + ")\n");
rotateColumn(puzzle, i);
print(puzzle);
System.out.println("### rotateRow(" + i + ")\n");
rotateRow(puzzle, i);
print(puzzle);
}
reset(puzzle);
System.out.println("### Testing random rotations\n");
print(puzzle);
for (int i = 0; i < 5; i++) {
randomRotation(puzzle);
print(puzzle);
}
}
public static void reset(int[][] puzzle) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
puzzle[i][j] = i * N + j;
}
}
public static void scramble(int[][] puzzle) {
for (int i = 0; i < NUMBER_OF_ROTATIONS; i++) {
randomRotation(puzzle);
}
}
// TODO: Implement method as specified in assignment brief
public static void rotateRow(int[][] arr, int row) {
int newRow = arr[row][arr.length - 1];
int nextRow;
for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) {
nextRow = arr[row][IndexNo];
arr[row][IndexNo] = newRow;
newRow = nextRow;
}
}
// TODO: Implement method as specified in assignment brief
public static void rotateColumn(int[][] arr, int column) {
int newCol = arr[arr.length - 1][column];
int nextCol;
for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) {
nextCol = arr[IndexNo][column];
arr[IndexNo][column] = newCol;
newCol = nextCol;
}
}
// TODO: Implement method as specified in assignment brief
public static void randomRotation(int[][] puzzle) {
int rowrandom = (int) (Math.random() * 3 + 1);
int colrandom = (int) (Math.random() * 3 + 1);
int option = (int) (Math.random() * 2 + 1);
if (option == 1) {
rotateRow(puzzle, rowrandom);
} else {
rotateColumn(puzzle, colrandom);
}
}
// TODO: Implement method as specified in assignment brief
static void play(int[][] puzzle) {
reset(puzzle);
print(puzzle);
for (int i = 0; i < 5; i++) {
randomRotation(puzzle);
}
print(puzzle);
System.out.println("enter row x or col x: ");
Scanner input = new Scanner(System.in);
String x = input.next();
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);
}
}
}
你的 play 方法没有 return 任何东西,因为它被声明为 void
,事实上你甚至没有 return 语句。
您应该将方法声明为:
static int[][] play(int[][] puzzle) {
...
return puzzle;
}
关于不显示任何内容的拼图,如果您使用input.next()
方法,Scanner
只会读取第一个单词。要阅读带有 space 的文本(例如 "row 1"),您需要使用 input.nextLine()
我的拼图的 play 部分没有 return 任何东西,我在其他有效的领域使用了类似的代码。我没有收到任何错误,所以我不知道出了什么问题,我试过使用“==”并单独输出拼图,但还是没有任何反应。任何帮助都会有用。谜题也应该使用循环,当谜题被解决时游戏应该结束,但我不确定前后使用什么,这里的任何帮助也会很有用。
package assignment;
import java.util.Scanner;
import static java.util.Scanner.*;
public class puzzle {
public static final int N = 4;
public static final int NUMBER_OF_ROTATIONS = 5;
public static void main(String[] args) {
int[][] puzzle = new int[N][N];
reset(puzzle);
test(puzzle);
reset(puzzle);
scramble(puzzle);
System.out.println("### Testing puzzle game play\n");
play(puzzle);
}
public static void print(int[][] puzzle) {
for (int[] row : puzzle) {
for (int elem : row) {
System.out.printf("%4d", elem);
}
System.out.println();
}
System.out.println();
}
public static void test(int[][] puzzle) {
System.out.println("### Testing reset method\n");
print(puzzle);
System.out.println("### Testing rotate methods\n");
print(puzzle);
for (int i = 0; i < N; i++) {
System.out.println("### rotateColumn(" + i + ")\n");
rotateColumn(puzzle, i);
print(puzzle);
System.out.println("### rotateRow(" + i + ")\n");
rotateRow(puzzle, i);
print(puzzle);
}
reset(puzzle);
System.out.println("### Testing random rotations\n");
print(puzzle);
for (int i = 0; i < 5; i++) {
randomRotation(puzzle);
print(puzzle);
}
}
public static void reset(int[][] puzzle) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
puzzle[i][j] = i * N + j;
}
}
public static void scramble(int[][] puzzle) {
for (int i = 0; i < NUMBER_OF_ROTATIONS; i++) {
randomRotation(puzzle);
}
}
// TODO: Implement method as specified in assignment brief
public static void rotateRow(int[][] arr, int row) {
int newRow = arr[row][arr.length - 1];
int nextRow;
for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) {
nextRow = arr[row][IndexNo];
arr[row][IndexNo] = newRow;
newRow = nextRow;
}
}
// TODO: Implement method as specified in assignment brief
public static void rotateColumn(int[][] arr, int column) {
int newCol = arr[arr.length - 1][column];
int nextCol;
for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) {
nextCol = arr[IndexNo][column];
arr[IndexNo][column] = newCol;
newCol = nextCol;
}
}
// TODO: Implement method as specified in assignment brief
public static void randomRotation(int[][] puzzle) {
int rowrandom = (int) (Math.random() * 3 + 1);
int colrandom = (int) (Math.random() * 3 + 1);
int option = (int) (Math.random() * 2 + 1);
if (option == 1) {
rotateRow(puzzle, rowrandom);
} else {
rotateColumn(puzzle, colrandom);
}
}
// TODO: Implement method as specified in assignment brief
static void play(int[][] puzzle) {
reset(puzzle);
print(puzzle);
for (int i = 0; i < 5; i++) {
randomRotation(puzzle);
}
print(puzzle);
System.out.println("enter row x or col x: ");
Scanner input = new Scanner(System.in);
String x = input.next();
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);
}
}
}
你的 play 方法没有 return 任何东西,因为它被声明为 void
,事实上你甚至没有 return 语句。
您应该将方法声明为:
static int[][] play(int[][] puzzle) {
...
return puzzle;
}
关于不显示任何内容的拼图,如果您使用input.next()
方法,Scanner
只会读取第一个单词。要阅读带有 space 的文本(例如 "row 1"),您需要使用 input.nextLine()