我有两个文件用于我的Array中间代码。第一个文件(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;
}
}
ArrayMedianTest:
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 ---");
}
}
答案 0 :(得分:1)
结果证明,你的算法运行得很好,除了在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。好运编程!