簡體   English   中英

java - 如何在我的主要方法中實現公共無效方法

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

我已經在 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 [][] 數組,並根據 2D 數組中指定的維度創建一個棋盤格。

在 main 方法中,我創建了一個名為“a”的二維顏色數組和一個名為“b”的新對象。 我想測試 fillCheckerBoard 方法,使用“a”作為輸入。 修改“a”后,我想打印“a”以查看我的 fillCheckerBoard 是否有效。 我創建了一個 Question15 對象,因為據我所知,void 方法需要一個對象才能工作。

我在 void 方法中所做的僅在我嘗試運行程序時返回錯誤。 如何測試我的方法是否真的可以打印出棋盤格?

首先,你的問題很模糊。 但據我所知,您需要創建一個棋盤格並用 X 和 O 填充它。 現在為了創建和顯示棋盤,您將需要 Java 小程序類。 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 類。 你可以只傳遞一個普通的 2dim 數組作為參數。 我沒有對您的代碼進行太多修改,但請查看以下代碼,看看您需要什么。

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);
    }
}

鑒於您的方法正在改變傳入的參數a ,您可能希望將其打印出來。 嘗試System.out.println(Arrays.deepToString(a))而不是System.out.println(b)

下面的行拋出 ArrayIndexOutOfBoundException,因為 Color 數組中只有 4 行,而此行嘗試訪問顏色數組的第 5 行

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

可能邏輯有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM