Java:如何用不同的方法获得数组的长度?
我的Java教科书中有一个问题:Java:如何用不同的方法获得数组的长度?,java,arrays,oop,multidimensional-array,getter,Java,Arrays,Oop,Multidimensional Array,Getter,我的Java教科书中有一个问题: 完成本课程: public class MyMatrix { public MyMatrix(int[][] elements) { // create new matrix with elements as the content } public int getRows() { // get the number of rows of the matrix } } 不要在方法
完成本课程:
public class MyMatrix
{
public MyMatrix(int[][] elements)
{
// create new matrix with elements as the content
}
public int getRows()
{
// get the number of rows of the matrix
}
}
不要在方法体之外编写任何代码
这就是我想做的:
public class MyMatrix
{
public MyMatrix(int[][] elements)
{
int[][] matrix = elements;
}
public int getRows()
{
return matrix.length;
}
}
这显然不起作用,因为矩阵
是构造函数的局部
我不知道如何才能使
矩阵
不在方法体之外工作而可用于其他方法。有人能告诉我怎么做吗?解决问题的唯一可能方法是告诉“getRows()”方法将矩阵作为参数
这样,您就不会在方法之外创建代码,而是使用给定的方法
公共类MyMatrix
{
公共MyMatrix(int[][]元素)
{
int[][]矩阵=元素;
int length=getRows(矩阵);
}
公共int getRows(int[][]矩阵)
{
返回矩阵长度;
}
}
如果教科书问题如您所述,那么这是一个技巧性问题
显然,如果getRows
必须返回传递给构造函数的数组长度,那么必须有一些信息从构造函数传递到方法。这意味着必须存在构造函数直接或间接写入的变量,以及方法直接或间接读取的变量
我能想到的最好办法是:
public class Base {
int[][] matrix;
Base(int[][] elements) { matrix = elements; }
int getRows() { return matrix.length; }
}
public class MyMatrix extends Base {
// No code added here
public MyMatrix(int[][] elements) { super(elements); }
public int getRows() { return super.getRows(); }
}
或者。。。你可以这样写:
public class MyMatrix {
// No "code" added outside of the method bodies. This
// is a declaration ... not "code".
private int[][] array;
public MyMatrix(int[][] elements) { array = elements; }
public int getRows() { return elements.length; }
}
但这些都是“诡计”的答案。。。因为他们依赖诡辩来解释“不在方法体之外编写任何代码”的实际含义。事实上,我不认为有一个解决方案在某种意义上不是一个骗人的答案
坦率地说,我怀疑在教科书中包含这样的技巧性问题是否明智。学生不会从尝试(或失败)解决技巧性问题中学习如何编程 将矩阵存储为实例变量。必须将
int[][]
成员添加到类中。也许这不算“方法体之外的代码”。你得到问题的答案了吗?