将数组传递给方法并返回数组

时间:2015-09-12 02:47:32

标签: java arrays methods

以下是我正在处理的问题

使用for循环生成一个包含10个随机整数的数组,所有这些都在100到200之间(包括100和200)。使用Arrays类来排序和显示整个数组。 接下来,将数组作为唯一参数传递给一个方法,该方法将数组的每个元素加倍,然后返回数组。使用foreach循环在一行上显示返回数组中的所有元素单一空间。后一个循环还应该确定返回数组中所有元素的总和。使用“千位”逗号显示总和,如示例输出中所示。

这是我的代码:

package bryant7and8;

import java.util.Arrays;


public static void main(String[] args) {

    int[] myList = new int[10];

        for (int i = 0; i < myList.length; i++) {
            myList[i] = 100 + (int) (Math.random() * ((110 - 10) + 1));

    }
    Arrays.sort(myList);
    System.out.println(Arrays.toString(myList));

    doubleArray (myList);
    System.out.println(doubleArray(myList));
}

public static int[] doubleArray(int[] array) {
    for (int i = 0; i < array.length; i++) {
        array[i] *= 2;
    }

    return array;
}

}

我无法弄清楚如何通过阵列,我已经在这几个小时了,我的书籍解释没有帮助。我也为这样糟糕的问题格式道歉,我仍然是stackoverflow的新手。

5 个答案:

答案 0 :(得分:2)

void doubleArray(int[] values){
    //change the value array, with doubling logic

}

由于数组是通过引用传递的,因此传递的数组将被更改。没有必要退货。

答案 1 :(得分:1)

你应该写一个这样的方法:

public static int[] doubleArray (int[] array) {
    //double the array... I think you know how to do this part.
    return array;
}

现在假设你有一个名为myArray的数组,你可以将它传递给这样的方法:

doubleArray (myArray);

然后myArray中的元素将加倍。您还可以将该方法的返回值用于其他一些用途。

或者,您可以返回另一个全新的阵列:

public static int[] doubleArray (int[] array) {
    int[] newArray = new int[array.length];
    //put all the stuff in "array" in "newArray"
    //double the new array... I think you know how to do this part.
    return newArray;
}

然后,当您调用该方法时,传入的参数将不会更改。但是返回值有两倍的数组。

答案 2 :(得分:0)

你只需要一个以数组作为参数的方法,修改该数组,然后返回相同的数组。

while( fgets (line, 1000, file)!=NULL ) 
{
    line[strlen(line)-1] = 0;   // remove newline
    printf("%s\n",line);   // print a newline, since the line no longer contains one
    printf("S1: line %6d, bytes = %3d\n---\n",lines,strlen(line));
    lines +=1;
} 

编辑:正如其他答案所指出的,你不需要来返回数组。您无论如何都要修改原始数组,因此您所做的任何更改都将保留在此方法的范围之外。

答案 3 :(得分:0)

只需创建一个静态方法(因为您将从静态main()方法调用它),将您的数组作为参数传递给它。对它进行一些修改。

public static void doubleTheArrayElements(myList){
//put your logic here
}

在您的main方法中调用它:doubleTheArrayElements(myList) 无需返回数组,因为Java参数通过引用传递。

答案 4 :(得分:0)

您最好相信java 通过值传递。有关详细信息,请参阅Is Java "pass-by-reference" or "pass-by-value"?

整个代码如下所示,仅供参考。调用 public static int [] notByReference(int [] arr)方法后,myList不会指向新对象。相反,已为复制的变量分配了对新对象的新引用。

import java.util.Arrays;

public class ArrayTenRandom {

    public static void main(String[] args) {

        int[] myList = new int[10];

        for (int i = 0; i < myList.length; i++) {
            myList[i] = 100 + (int) (Math.random() * ((110 - 10) + 1));

        }
        Arrays.sort(myList);
        System.out.println(Arrays.toString(myList));
        doubleArray(myList);
        System.out.println(Arrays.toString(myList));
        notByReference(myList);
        System.out.println(Arrays.toString(myList));

    }

    public static void doubleArray(int[] arr){
        for(int i = 0; i < arr.length; i++){
            arr[i] = arr[i] * 2;
        }
    }

    public static int[] notByReference(int[] arr){
        arr = new int[2];
        System.out.println(Arrays.toString(arr));
        return arr;
    }
}