如何在java的主方法中实现公共void方法
我已经在StackOverflow上冲浪了大约一个小时,寻找这个非常简单的问题的答案,但似乎没有一个答案适用于这种特殊情况如何在java的主方法中实现公共void方法,java,methods,void,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 < b
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);
}
}
导入java.awt.Color;
公开课问题15{
公共空白棋盘格(彩色[]棋盘){
用于(int n=0;n
CreateCheckboard方法采用颜色[][]数组,并根据二维数组中指定的尺寸创建棋盘
在主方法中,我创建了一个名为“a”的2D颜色数组和一个名为“b”的新对象。我想用“a”作为输入来测试fillcheckboard方法。一旦“a”被修改,我想打印出“a”,看看我的棋盘格是否有效。我制作了一个Question15对象,因为据我所知,一个void方法需要一个对象才能工作
我在void方法中所做的只是在尝试运行程序时返回一个错误。如何测试我的方法是否可以打印出棋盘格?鉴于您的方法正在更改传入的参数
a
,您可能希望将其打印出来。尝试System.out.println(Arrays.deepToString(a))
而不是System.out.println(b)
下面的一行是抛出ArrayIndexOutOfBoundException,因为颜色数组中只有4行,此行尝试访问颜色数组的第5行
if(电路板[k][n]==颜色.黑色){
逻辑上可能有一些问题。首先,你的问题很模糊。但据我所知,你需要创建一个棋盘,并用X和O填充它。现在,为了创建和显示一个棋盘,你需要Java applet类。Java applet类的一个特点是它不需要主me法德。 以下代码根据输入创建棋盘格
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);
}
}
}
}
import java.applet.applet;
导入java.awt.Color;
导入java.awt.Graphics;
公共类棋盘扩展小程序{
私有静态最终长serialVersionUID=1L;
公共空间涂料(图g){
int行;
int col;
int x,y;
用于(行=0;行<4;行++){
用于(列=0;列<5;列++){
x=col*40;
y=行*40;
如果((行%2)=(列%2)){
g、 setColor(Color.white);
}否则{
g、 设置颜色(颜色为黑色);
}
g、 fillRect(x,y,40,40);
}
}
}
}
或者,如果你想使用main方法打印输出,那么你就不需要Color类。你可以通过一个普通的2维数组作为参数来实现。我没有对你的代码做太多修改,但是请仔细阅读下面的代码,看看你需要什么
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);
}
}
导入java.awt.Color;
公开课问题15{
公共空白棋盘格(彩色[]棋盘){
对于(int row=0;row
我不理解这个问题。您希望发生什么,实际发生了什么?您是否刚刚尝试运行应用程序?此代码将编译并运行,但由于两个错误(一个在第二个循环中,另一个在打印时检查电路板颜色)将抛出ArrayIndexOutOfBoundsException。可能与…重复,也可能不涉及代码的其他问题,也可能无法准确打印所需内容…您应该在内部循环(即外部循环的最后一行)之后添加System.out.println();
,如果您希望它看起来像一块板;否则,它将全部作为一条长线打印。另外,将board[k][n]
更改为board[n][k]
在第二个if
中,为了避免数组索引超出边界的异常
。它实际上不改变变量a
是吗?它传递a
,但从不返回任何内容。改变的变量将是参数board
,但不会返回。它正在改变a
,就像a
>和board
是内存中同一数组的两个名称。虽然从你的问题中猜测,但这是一个比你想要/需要的更复杂的概念。我认为java不是通过引用传递的,而是通过值传递的。所以这两个变量应该有两个不同的内存块,对吗?它不会改变变量a,但它确实修改了a
引用的对象。没错,它是传递值,但可变对象类型(如数组)仍然是可变的。如果在f中写入board=null