我已经在一款井字游戏上工作了很长一段时间,我已经运行得很好了,但是我想把它带到下一个层次,那就是我想让它成为一个可修改的板,根据用户输入设置的大小。
下面是我现在的一小段代码:
import java.util.*;
public class board {
//************** INSTANCE VARIABLES ****************
private String[][] space = new String[3][3];
private String player1 = "";
private String player2 = "";
private int turnNum = 0;
private int playerCount = 0;
private boolean newGame = true;
private Scanner input = new Scanner(System.in);
//************** CONSTRUCTOR ****************
/**
* Constructs a board with 9 spaces all set to the default value of space
*/
public board(){
for (int i = 0; i<=2; i++){
for (int j = 0; j<=2; j++){
this.setSpace(i, j, " ");
}
}
}
board的构造函数是我想要修改的,我试图让它在构造函数
的参数中创建一个board到一个set变量谢谢!
注:我被告知它与链表有关,但我不知道如何使用和实现它们:/
不要在声明中定义字符串2D数组'space'的大小。从用户处获取大小后再分配大小
可以在构造函数中调用createBoard函数。让我们试试。
private String[][] space;
private String player1 = "";
private String player2 = "";
private int turnNum = 0;
private int playerCount = 0;
private boolean newGame = true;
private Scanner input = new Scanner(System.in);
public void createBoard(){
//get board width
System.out.print("Enter board width:");
int width = input.nextInt();
//get board height
System.out.print("Enter board height:");
int height = input.nextInt();
//allocate space
space = new String[height][width];
board(width, height);
}
public void board(int width, int height){
for (int i = 0; i< height; i++){
for (int j = 0; j< width; j++){
this.setSpace(i, j, " ");
}
}
}
你可以这样做:
public board(int width, int height){
for (int i = 0; i<=width; i++){
for (int j = 0; j<=height; j++){
this.setSpace(i, j, " ");
}
}
}
但是一定要设置一些默认值。
您已声明
private String[][] space = new String[3][3];
你将不得不替换[3][3],因为在编译时你不知道你想要的大小是多少。你可以使用数据结构代替二维数组。
您可以选择多种方法来执行此操作。一种方法是有一个字符串的ArrayList(你必须导入这个包),并使用ArrayList api来动态地添加一定大小的字符串。例如,你将一个长度为"length"的字符串添加n次,其中n是"width"。如果你喜欢,你也可以有一个空格链表。
希望这对你有帮助!