簡體   English   中英

Java:如何以不同的方法獲取數組的長度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM