以下是我正在处理的问题
使用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的新手。
答案 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;
}
}