首页 > 解决方案 > 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);
  }
}

代码示例会很棒!

标签: javamultidimensional-arraymethodsconstructorvoid

解决方案


这是我的解决方案,我已经删除了数组必须是正方形的限制,但是很容易重新添加该要求。稍后我通过使用长度属性来获取数组的大小。我还添加了一个 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];

 ....
}

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


推荐阅读