簡體   English   中英

從 void 方法打印修改后的數組

[英]printing a modified array from a void method

我在一本書中看到了下面的代碼。 我知道 void 方法不能返回值。 當我運行代碼時,編譯器無法打印修改后的數組,而在書中,則顯示了值。 如何修復代碼以打印修改后的數組?

public static void main(String[] args) {

    int[] array = {1, 2, 3, 4, 5};
    System.out.println("The values of original array are:");
    for(int value: array)
    {
        System.out.print(value + "\t");
    }
    modifyArray(array);
    System.out.println("The values after modified array are:");
    for (int value:array)
    {
        System.out.print(value + "\t");
    }

}    
public static void modifyArray(int[] b)
{
    for (int counter=0; counter<=b.length; counter++)
    {
        b[counter] *=2; 
    }
}

如果我沒記錯的話,你應該為你的modifyArray()方法得到一個ArrayIndexOutOfBoundsException 將方法中的 for 循環更改為

for (int counter=0; counter<b.length; counter++) // use < not <=
    {
        b[counter] *=2; 
    }
for (int counter=0; counter<=b.length; counter++)

這段代碼運行了 6 次,因此試圖訪問不存在的數組的第 6 個元素。 它必須是 ArrayIndexOutOfBoundsException 錯誤。 將上面的行更改為:

for(int counter = 0; counter<b.length; counter++)

這會奏效!

該代碼實際上有效,但 for 循環方法中存在錯誤,導致 IndexOutOfBound 異常,這是正確的版本。

public static void modifyArray(int[] b)
{
    for (int counter=0; counter<b.length; counter++)
    {
        b[counter] *=2; 
    }
}

該方法返回 void 但您可以讀取數組內的修改值,因為您將數組的引用作為方法參數傳遞而不是數組的副本。 這是 Java 語言的一個非常基本的概念,您應該開始閱讀將信息傳遞給方法或構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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