gpt4 book ai didi

java - 调用全局数组

转载 作者:行者123 更新时间:2023-11-29 08:19:52 24 4
gpt4 key购买 nike

我目前正在尝试使用二维数组绘制形状。在我的类(class)中,有一个用 public char canvas[][];

定义的全局数组

到目前为止,我只使用 char canvas[][] = new char[height][width]; 声明数组

如果这个数组已经被声明,我不应该修改我得到的代码,我该如何调用那个数组的实例以便我可以使用它?

谢谢。

(编辑)

class DrawingSystem {

public char canvas[][];

public static void makeNewCanvas(int tmpWidth, int tmpHeight) {

canvas[][] = new char[tmpHeight][tmpWidth];

for (int row=0; row<tmpHeight; row++) {
for (int col=0; col<tmpWidth; col++) {
canvas[row][col] = ' ';
}
}
}

最佳答案

静态方法和实例变量之间存在不兼容性。

这样想:实例变量与类的特定实例相关联;静态变量与 本身相关联。您通过类​​调用静态方法:

ClassI.callStaticMethod();

而您通过类的实例调用实例方法:

public ClassI classObj = new ClassI();
classObj.callInstanceMethod();

在您发布的代码中,在静态方法中设置了一个实例变量(“canvas”)(main 与类关联,而不是实例)。

因此,您需要创建实例方法来修改/更新您的“ Canvas ”,并在静态函数中创建该类的实例。该对象(“实例”)可用于更新实例变量。

这是一个例子:

public class Foo {
public char canvas[][];

public static void main(String[] args) {
Foo fooObj = new Foo(); //creates an instance of this class
fooObj.createCanvas(2, 2);
fooObj.modifyCanvas(0, 0, 'c');
}

public void createCanvas(int x, int y) {
canvas = new char[x][y];
}
public void modifyCanvas(int x, int y, char c) {
canvas[x][y] = c;
}
}

这显然与您的作业不是一对一的关联,但我相信您能够根据自己的工作调整它:-)

关于java - 调用全局数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com