このプログラムは、挿入ソートを使用して、ファイルから最初の n 単語をソートします。
これは私が作ったものではありません。教師が提供したこのプログラムを使用して、他のソート手法を実装するように依頼されました。ソースコードをインポートして実行したとき。それは言います:
スレッド「メイン」の例外 java.lang.ArrayIndexOutOfBoundsException: SortingAnalysis.main (SortingAnalysis.java:26) で 0
しかし、私たちの先生が私たちのクラスでそれを実演したとき、間違いはありませんでした。
また、ファイル名を指定せずにファイルから単語を並べ替える方法について
も疑問に思っています(例: tobesorted.txt)。JRE System Library 内にある限り、動作するのではないでしょうか。
import java.io.*;
import java.util.*;
/**
* Compares the running times of sorting algorithms
* @author bryann
*
*/
public class SortingAnalysis {
public static void insertionSort(String[] a) {
int n = a.length;
for(int i = 1; i < n; i++) {
String cur = a[i];
int j = i - 1;
while((j >= 0) && (a[j].compareTo(cur) > 0)) {
a[j + 1] = a[j--];
} // end while
a[j + 1] = cur;
} // end for
} // end insertionSort
public static void main(String[] args) {
final int NO_OF_WORDS = 5000;
try {
Scanner file = new Scanner(new File(args[0]));
String[] words = new String[NO_OF_WORDS];
int i = 0;
while(file.hasNext() && i < NO_OF_WORDS) {
words[i] = file.next();
i++;
} // end while
long start = System.currentTimeMillis();
insertionSort(words);
long end = System.currentTimeMillis();
System.out.println("Sorted Words: ");
for(int j = 0; j < words.length; j++) {
System.out.println(words[j]);
} // end for
System.out.print("Running time of insertion sort: " + (end - start) + "ms");
} // end try
catch(SecurityException securityException) {
System.err.println("You do not have proper privilege to access the files.");
System.exit(1);
} // end catch
catch(FileNotFoundException fileNotFoundException) {
System.err.println("Error accessing file");
System.exit(1);
} // end catch
} // end main
} // end class SortingAnalysis
エラーはインポートによるものですか? Eclipse を使用して、
[ファイル] > [インポート] > [一般] > [ファイル システム] > [ディレクトリから] (彼が私たちに送ったフォルダー全体) > [フォルダーへ] (新しいプロジェクトを作成し、コードを「インポート」した場所があります) > 完了をクリックしました。
私を助けてください。実行できないため、割り当てを開始できません (つまり、同じソース ファイルで他の並べ替え手法を試します)。どうもありがとうございました!