gpt4 book ai didi

Java – 具有构造函数和方法的二维数组

转载 作者:行者123 更新时间:2023-12-02 11:19:47 25 4
gpt4 key购买 nike

我是 Java 新手,必须创建一个方法,为二维数组中的每个偶数打印出“A”(大学项目)。结果应该如下所示:

结果。线条只是为了更好理解

The result. Lines are just for better understanding

主要任务表明它应该适用于每个字段大小 n。给定一个字段变量 char[][] field; 和一个带有参数 public Pattern(int n) 的构造函数。构造函数是必需的。

1.) 第一个问题:

我不确定是否可以访问构造函数内的变量字段,因为它在其范围内。是否有可能在构造函数中声明字段大小,将其传递给我的方法,最后以所需的结果打印整个类?

2.) 第二个问题:

如果没有给定的构造函数,替代方案会是什么样子?

这是我的代码:

public class Pattern {

char[][] field;

public Pattern(int n) {
if (n < 5) n = 5;
if (n % 2 == 0) n = n + 1;
field = new char[n][n];
}

public void fillArrayWithA() {
for (int i = 0; i <= 5; i++) {
for (int j = 0; j <= 5; j++) {
if ((i + j) % 2 == 0) {
System.out.println('A');
} else {
System.out.println(' ');
}
}
System.out.println("\n");
}
}

public static void main(String[] args) {
Pattern firstex = new Pattern(5);
firstex.fillArrayWithA();
System.out.println(firstex);
}
}

代码示例会很棒!!

最佳答案

这是我的解决方案,我已经删除了数组必须是正方形的限制,但很容易添加回该要求。稍后我使用 length 属性获取数组的大小。我还添加了一个 toString() 方法来打印数组。

public class Pattern {
private char [][] field;

public Pattern(int size) {
field = new char [size][size];
}

public void fillField() {
int size = field.length;
for(int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
int value = i+j + 1;
field[i][j] = value % 2 == 0 ? 'A' : ' ';
}
}
}

public String toString() {
int size = field.length;

StringBuilder builder = new StringBuilder(size * size);

for(int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
builder.append(field[i][j]);
builder.append(',');
}
builder.append('\n');
}
return builder.toString();
}

public static void main(String[] args) {
Pattern p = new Pattern(5);
p.fillField();
System.out.print(p);
}
}

为了避免使用构造函数,请让 fillField 将大小作为参数并在那里初始化数组。

public void fillField(int size) {
field = new char [size][size];

....
}

拥有构造函数的最大好处是您知道成员字段在使用之前已初始化。

关于Java – 具有构造函数和方法的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019081/

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