如何在 java 的主要方法中实现 public void 方法

How can I implement a public void method in my main method in java

我已经在 Whosebug 上浏览了大约一个小时来寻找这个非常简单的问题的答案,但 none 似乎适用于这种特定情况。

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 [][] 数组,并根据二维数组中指定的尺寸创建棋盘格。

在主要方法中,我创建了一个名为 "a" 的二维颜色数组和一个名为 "b" 的新对象。我想使用 "a" 作为输入来测试 fillCheckerBoard 方法。修改 "a" 后,我想打印出 "a" 以查看我的 fillCheckerBoard 是否有效。我制作了一个 Question15 对象,因为据我所知,void 方法需要一个对象才能工作。

我在 void 方法中所做的只是 returns 当我尝试 运行 程序时出错。如何测试我的方法是否真的可以打印出棋盘?

鉴于您的方法正在改变传入的参数 a,您可能希望将其打印出来。尝试 System.out.println(Arrays.deepToString(a)) 而不是 System.out.println(b)

下面的行抛出 ArrayIndexOutOfBoundException,因为你在 Color 数组中只有 4 行,而这一行试图访问颜色数组的第 5 行

if(board[k][n] == Color.black){

可能逻辑有问题

首先你的问题很含糊。但据我所知,您需要创建一个棋盘并用 X 和 O 填充它。现在,为了创建和显示棋盘,您需要 Java 小程序 class。 Java Applet class 的特点之一是它不需要 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);
            }

        }

    }
}

或者,如果您希望使用主要方法来打印输出,那么您将不需要颜色 class。你可以只传递一个普通的 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);
    }
}