如何在 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);
}
}
我已经在 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);
}
}