プログラムの修正方法がわかりません。Sorting.java プログラムを public static void selectionSort (int[] intList) に変更しようとしましたが、修正されていないようです。誰か助けてくれませんか?
ファイル Sorting.java には、Sorting クラスが含まれています。このクラスは、任意の Comparable オブジェクトの配列を昇順で並べ替えるための選択並べ替えアルゴリズムと挿入並べ替えアルゴリズムの両方を実装します。この演習では、Sorting クラスを使用して、さまざまな種類のオブジェクトを並べ替えます。
Numbers.java ファイルは、整数の配列を読み取り、選択ソート アルゴリズムを呼び出してそれらをソートし、ソートされた配列を出力します。Sorting.java と Numbers.java をディレクトリに保存します。Numbers.java は現在の形式ではコンパイルされません。その理由を理解できるかどうかを調べるために、それを調べてください。
Numbers.java をコンパイルして、エラー メッセージの内容を確認してください。**問題には、プリミティブ データとオブジェクトの違いが関係しています。プログラムを変更して、正しく動作するようにします (注: 多くの変更を行う必要はありません。Java 1.5 のオートボクシング機能により、int から Integer へのほとんどの変換が処理されます)。
コードは次のとおりです。
// Demonstrates the selection sort and insertion sort algorithms.
public class Sorting {
// Sorts the specified array of objects using the selection
// sort algorithm.
public static void selectionSort (Comparable[] list) {
int min;
Comparable temp;
for (int index = 0; index < list.length-1; index++) {
min = index;
for (int scan = index+1; scan < list.length; scan++)
if (list[scan].compareTo(list[min]) < 0)
min = scan;
// Swap the values
temp = list[min];
list[min] = list[index];
list[index] = temp;
}
}
// Sorts the specified array of objects using the insertion
// sort algorithm.
public static void insertionSort (Comparable[] list) {
for (int index = 1; index < list.length; index++) {
Comparable key = list[index];
int position = index;
// Shift larger values to the right
while (position > 0 && key.compareTo(list[position-1]) < 0) {
list[position] = list[position-1];
position--;
}
list[position] = key;
}
}
}
// Numbers.java
// Demonstrates selectionSort on an array of integers.
import java.util.Scanner;
public class Numbers {
// Reads in an array of integers, sorts them,
// then prints them in sorted order.
public static void main (String[] args) {
int[] intList;
int size;
Scanner scan = new Scanner(System.in);
System.out.print ("\nHow many integers do you want to sort? ");
size = scan.nextInt();
intList = new int[size];
System.out.println ("\nEnter the numbers...");
for (int i = 0; i < size; i++)
intList[i] = scan.nextInt();
Sorting.selectionSort(intList);
System.out.println ("\nYour numbers in sorted order...");
for (int i = 0; i < size; i++)
System.out.print(intList[i] + " ");
System.out.println ();
}
}