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

时间:2017-01-27 03:48:45

标签: java methods void

我一直在浏览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方法中所做的只在我尝试运行程序时才返回错误。如何测试我的方法是否可以实际打印出棋盘?

3 个答案:

答案 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){

逻辑上可能存在一些问题。