[英]Java: How to get length of array in different method?
我的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)
{
int[][] matrix = elements;
}
public int getRows()
{
return matrix.length;
}
}
這顯然是行不通的,因為matrix
對於構造函數而言是本地的。
我不知道如何在不使用方法主體的情況下使matrix
可用於其他方法。 有人可以告訴我該怎么做嗎?
解決您的問題的唯一可能方法是告訴“ getRows()”方法以Matrix作為參數。
這樣,您不是在方法之外創建代碼,而是使用給定的代碼。
public class MyMatrix { public MyMatrix(int[][] elements) { int[][] matrix = elements; int length = getRows(matrix); } public int getRows(int[][] matrix) { return matrix.length; } }
希望這能回答您的問題。
讓我知道結果是什么:)
祝好運!
如果教科書問題與您所說的一樣,那么這是一個技巧問題。
顯然,如果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; }
}
但是,這些都是“技巧”答案……它們依賴於詭辯,即“ [不在方法主體之外編寫任何代碼]”的實際含義。 實際上,從某種意義上講,我認為沒有解決方案不是絕妙的答案。
坦白說,我懷疑在教科書中是否包含諸如此類的技巧性問題。 學生將不會從嘗試(和失敗)解決技巧問題中學習如何編程!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.