我一直在浏览StackOverflow大约一个小时寻找这个非常简单的问题的答案,但似乎没有适用于这种特定情况。
import java.awt.Color;
public class Question15 {
public void fillCheckerBoard(Color[][] board){
for(int n = 0; n < board.length; n++){
for(int k = 0; k < board[0].length; k++){
if((k%2==0 && n%2 ==0)||(k%2==1 && n%2 ==1)){
board[n][k] = Color.black;
}
else{
board[n][k] = Color.white;
}
if(board[k][n] == Color.black){
System.out.print("x");
}
else
System.out.print(" ");
}
}
}
public static void main(String[] args) {
Color [][] a = new Color [4][5];
Question15 b = new Question15();
b.fillCheckerBoard(a);
System.out.print(b);
}
}
createCheckerBoard方法接受Color [] []数组,并创建一个二维数组中指定尺寸的棋盘格。
在main方法中,我创建了一个名为&#34; a&#34;的2D颜色数组,以及一个名为&#34; b&#34;的新对象。我想测试一下fillCheckerBoard方法,使用&#34; a&#34;作为输入。一旦&#34; a&#34;已被修改,我想打印&#34; a&#34;看看我的fillCheckerBoard是否有效。我创建了一个Question15对象,因为据我所知,void方法需要一个对象才能工作。
我在void方法中所做的只在我尝试运行程序时才返回错误。如何测试我的方法是否可以实际打印出棋盘?
答案 0 :(得分:1)
首先,你的问题很模糊。但据我所知,你需要创建一个棋盘并用X和O填充它。现在,为了创建和显示棋盘,您将需要Java applet类。 Java Applet类的一个特性是它不需要main方法。 以下代码根据输入创建了一个棋盘。
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
public class Checkerboard extends Applet {
private static final long serialVersionUID = 1L;
public void paint(Graphics g) {
int row;
int col;
int x, y;
for (row = 0; row < 4; row++) {
for (col = 0; col < 5; col++) {
x = col * 40;
y = row * 40;
if ((row % 2) == (col % 2)) {
g.setColor(Color.white);
} else {
g.setColor(Color.black);
}
g.fillRect(x, y, 40, 40);
}
}
}
}
或者如果您希望使用main方法打印输出,那么您将不需要Color类。你可以通过一个普通的2 dim数组作为参数。我没有修改你的代码,但请仔细阅读以下代码,看看你需要什么。
import java.awt.Color;
public class Question15 {
public void fillCheckerBoard(Color[][] board) {
for (int row = 0; row < board.length; row++) {
for (int column = 0; column < board[0].length; column++) {
if ((row % 2) == (column % 2)) {
board[row][column] = Color.black;
} else {
board[row][column] = Color.white;
}
if (board[row][column] == Color.black) {
System.out.print("X ");
} else
System.out.print("O ");
}
System.out.println("");
}
}
public static void main(String[] args) {
Color[][] a = new Color[4][5];
Question15 b = new Question15();
b.fillCheckerBoard(a);
}
}
答案 1 :(得分:0)
鉴于您的方法正在改变传入的参数a
,您可能希望将其打印出来。请尝试使用System.out.println(Arrays.deepToString(a))
代替System.out.println(b)
答案 2 :(得分:-2)
下面一行是抛出ArrayIndexOutOfBoundException,因为Color数组中只有4行,而这一行试图访问第5行颜色数组
if(board [k] [n] == Color.black){
逻辑上可能存在一些问题。