【问题标题】:Setter and Getter for Java 2d array lengthJava 2d 数组长度的 Setter 和 Getter
【发布时间】:2018-10-24 17:22:54
【问题描述】:

我做了一个涉及二维数组的 java 项目的结构化代码,现在我正在尝试使我的代码面向对象。我正在尝试访问二维数组的长度,但我很挣扎。

我的结构化代码有这个:

private static char[][] environment = new char[0][];

我一直在方法中使用 environment.length;

但是当我尝试切换到 OOP 时,我无法访问不同类中环境的长度。我是否使用一组并得到这样的结果:

 public static char[][] getEnvironment() {
        return environment;
    }

    public static void setEnvironment(char[][] environment) {
        MyClass.environment = environment;
    }

然后像这样访问长度:

MyClass.getEnvironment().length

这是允许的吗?有没有其他方法可以做到这一点?当我有二维数组的输入时,我也遇到了问题。

我在结构化版本中使用它:

if ( y<= environment[y].length - 1)

我可以在 OOP 中这样做吗:

if (y<= MyClass.getEnvironment().length - 1)

我不知道如何将 y 合并到上面的代码中。

【问题讨论】:

  • 静态方法对面向对象几乎没有贡献。它们的行为更像程序语言。

标签: java arrays 2d


【解决方案1】:

我认为您要做的是创建替换原始逻辑的方法。

如果您像这样在char[][] 上使用长度方法,

if (y &lt;= environment[y].lenght - 1)

你可以用这样的方式封装行为以供重用:

public static int getEnvironmentLengthAt(int y) { return environment[y].length; }

我认为MyClass.getEnvironment().length 可能不起作用,因为您试图返回二维数组的长度,而您的比较是在该二维数组中的特定行上。

如果没有更多上下文,MyClass.getEnvironment(y).lenght 之类的内容可能更适合您,但您必须有这样的方法声明,

public static char[] getEnvironment(int y){ return environment[y]; }

支持上述方法调用。

【讨论】:

  • 那么针对不同的情况制定不同的方法?
  • 是的,对于您想要封装对数据结构的访问的情况,即您想要访问 char [][] environment 对象的任何地方
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
相关资源
最近更新 更多