配列の中央値コードに使用している 2 つのファイルがあります。最初のファイル (ArrayMedian.java) は中央値を収集して計算するために使用され、2 番目のファイルはテスター ファイル (ArrayMedianTest.java) です。
いくつかのソース コードが提供され、データセット内の各数値の設定範囲を受け入れるように変更する必要がありました。その部分が完了し、ランダムな範囲が表示されましたが、配列に到達すると計算が行われなくなり、何が問題なのか本当にわかりません。
私がやろうとしているもう1つのことは、ArrayMedianにあります。そこにwhileループを入れて、データセットに「0」が入力された場合に終了させますが、そのファイルで動作したくないようです。ファイルにメインがないためですか?
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 ---");
}
}