java - Java – 带有构造函数和方法的二维数组
问题描述
我是 Java 新手,必须创建一个方法,为二维数组(Project university)中的每个偶数打印出“A”。结果应如下所示:
结果。线条只是为了更好地理解
主要任务说它应该适用于每个字段大小 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);
}
}
代码示例会很棒!
解决方案
这是我的解决方案,我已经删除了数组必须是正方形的限制,但是很容易重新添加该要求。稍后我通过使用长度属性来获取数组的大小。我还添加了一个 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];
....
}
拥有构造函数的最大好处是您知道成员字段在使用之前已初始化。
推荐阅读
- php - Yii2 用户身份在登录后为空
- c# - 打包android资产文件夹的问题
- python - 如何在 Python 中添加循环分组?
- java - 这个 UI 代码的辅助方法会是什么样子?
- reactjs - 当涉及到平板电脑尺寸时,我想更改视频播放器的宽度
- c - shell脚本中的后台进程收到EOF
- ios - 以编程方式检查 App 是否在 App Store 上处于 Review 或 Live 中?
- google-analytics - 我们可以将财产之间的所有数据迁移到谷歌分析中的另一个相同帐户吗?
- javascript - 如何将选定的选项值复制到剪贴板?
- python - utils 不包含 progress_bar_downloader