[英]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.