我想打印从整数数组计算的均值和中位数。这是我的代码:
// I create and populate the int array
public static int[] populateArray(Scanner input) {
int[] array = new int[input.nextInt()];
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
}
return array;
}
// I create a method wich takes as formal paramether an array of int an prints the result of mean from the array
public static void printMean(int[] populatedArray) {
double mean = 0;
for (int aPopulatedArray : populatedArray) {
mean += aPopulatedArray;
}
mean /= populatedArray.length;
System.out.println(mean);
}
// I create a method wich takes as formal paramether an array of int an prints the result of median from the array
public static void printMedian(int[] populatedArray) {
Arrays.sort(populatedArray);
double median;
if (populatedArray.length % 2 != 0) {
median = populatedArray[populatedArray.length / 2];
} else {
median = (populatedArray[populatedArray.length / 2] + populatedArray[populatedArray.length / 2 - 1]) / 2;
}
System.out.println(median);
}
在Main中,我首先要调用populateArray()
方法。我将填充我的数组。然后,我如何将其作为形式参数传递给其他两种方法(printMean()
和printMedian()
),只传递来自populateArray()
的数组?
每次我使用populateArray()
方法中的数组时,我都不想这样做:
int[] array = new int[input.nextInt()];
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
}
我想填充数组,然后在两种打印方法中使用这些值。
提前致谢!
答案 0 :(得分:2)
我认为代码结构没有太大问题,假设逻辑是正确的。只需获取填充的数组,然后在其他两种方法中使用它:
public static void main(String[] args) {
int[] array = populateArray(new Scanner(System.in));
printMean(array);
printMedian(array);
}
你应该放弃这个,因为你的帮助方法读取但不修改输入数组。这意味着您可以继续将初始数组传递给后续方法。
答案 1 :(得分:2)
你的主要方法应该是这样的:
public static void main(String[] args) {
int[] arr = populateArray(new Scanner(System.in)); //Get a populated array
printMean(arr); //Pass it to printMean
printMedian(arr); //Pass it to PrintMedian
}
答案 2 :(得分:0)
实际上
Arrays.sort(populatedArray)
确实修改了populatedArray。它对您发布的代码没有影响,因为平均值计算并不关心数组值的顺序。 但如果你计划进一步开发,我会建议,例如复制到不操纵原始的populatedArray:
public static void printMedian(int[] populatedArray) {
int[] copiedArray = new int[populatedArray.length];
System.arraycopy(populatedArray, 0, copiedArray, 0, populatedArray.length);
Arrays.sort(copiedArray);
double median;
if (copiedArray.length % 2 != 0) {
median = copiedArray[copiedArray.length / 2];
} else {
median = (copiedArray[copiedArray.length / 2] + copiedArray[copiedArray.length / 2 - 1]) / 2;
}
System.out.println(median);
}
然后您可以应用上述帖子中的主要方法,而无需操作populatedArray。