从void方法打印修改过的数组

时间:2014-04-01 08:22:12

标签: java arrays void

我在书中看到了以下代码。我知道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; 
    }
}

3 个答案:

答案 0 :(得分:6)

如果我没记错的话,您的ArrayIndexOutOfBoundsException方法应该会modifyArray()。将方法中的for循环更改为

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

答案 1 :(得分:1)

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

此代码运行6次,因此尝试访问不存在的数组的第6个元素。它必须是ArrayIndexOutOfBoundsException错误。 将以上行改为:

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

这会有效!

答案 2 :(得分:1)

代码实际上有效但循环方法中有一个错误导致IndexOutOfBound异常,这是正确的版本。

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

该方法返回void但您可以读取数组内的修改值,因为您作为方法参数传递数组的引用而不是数组的副本。这是您应该开始阅读的Java语言的一个非常基本的概念 Passing Information to a Method or a Constructor