gpt4 book ai didi

Java:无法使用代码计算中位数

转载 作者:行者123 更新时间:2023-12-01 14:00:55 25 4
gpt4 key购买 nike

我有两个文件用于我的数组中值代码。第一个文件(ArrayMedian.java)用于收集然后计算中位数,第二个文件是测试器文件(ArrayMedianTest.java)

我获得了一些源代码,需要对其进行修改,接受数据集中每个数字的设定范围。我完成了该部分并显示了随机范围,但现在当我到达数组时它不再计算,我真的无法指出出了什么问题。

我想做的另一件事是在 ArrayMedian 中,在其中放置一个 while 循环,以便在数据集输入“0”时终止它,但它似乎不想在该文件中工作,难道是因为文件中没有main?

package bonus2.u06.exercise.ex3;

import java.util.Scanner;

public class ArrayMedian {

private int[] arr; // just declare array
Scanner keyboard; // shared field

// initialize keyboard and array
public void init() {
keyboard = new Scanner( System.in );
System.out.print("Enter the dataset size: ");

int size = keyboard.nextInt(); // must be odd number
arr = new int[ size ]; // instantiate
}

// Randomize the array
public void getRange() {
//System.out.println("\nYou entered: ");
System.out.print("Enter a Range: ");
int range = keyboard.nextInt();

System.out.print("array: \n");
for(int i = 0; i < arr.length; i++){
int myRnd = (int)( range * Math.random() );

System.out.print(" " + myRnd + " ");
}
}

// find the median of array
public int calcMedian() {
int half_length = arr.length/2;

for (int i = 0; i < arr.length; i++) {

int count = 0;

for (int j = 0; j < arr.length; j++) {
if (arr[i] > arr[j])
count++;
}
if (count == half_length) {
//<========= terminate this method
return arr[i];
}

}

return 0;
}

}

数组中位数测试:

package bonus2.u06.exercise.ex3;

public class ArrayMedianTest {

public static void main(String args[]) {
// instantiate
ArrayMedian obj = new ArrayMedian();
// execute all methods
obj.init();
obj.getRange();

int median = obj.calcMedian();
System.out.println("\nmedian : " + median);

System.out.println("\n--- done ---");
}

}

最佳答案

事实证明,您的算法工作得很好,除了在 getRange() 方法中,您忘记设置数组的值,因此该数组是一个由零组成的数组。它应该是这样的:

public void getRange() {        
//System.out.println("\nYou entered: ");
System.out.print("Enter a Range: ");
int range = keyboard.nextInt();

System.out.print("array: \n");
for(int i = 0; i < arr.length; i++){
int myRnd = (int)( range * Math.random() );

System.out.print(" " + myRnd + " ");
arr[i] = myRnd; // <-- You missed this line right here!
}
}

此外,作为建议,如果您想将代码放入 stackoverflow,则行首的间距必须为 4,再加上您可能使用的任何缩进。祝编程好运!

关于Java:无法使用代码计算中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com