该程序使用插入排序对文件中的前 n 个单词进行排序。
这不是我做的。我们被要求使用老师提供的这个程序来实施其他分类技术。我导入了源代码,并在我运行它时。它说:
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 在 SortingAnalysis.main(SortingAnalysis.java:26)
但是当我们的老师在我们的课堂上演示它时,它没有错误。
我也想知道它是如何在不说明文件名的情况下对文件中的单词进行排序的(例如 tobesorted.txt)。也许只要它在 JRE 系统库中,它就可以工作,不是吗?
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,我只需单击
文件 > 导入 > 常规 > 文件系统 > 从目录(他发送给我们的整个文件夹)> 进入文件夹(我创建了一个新项目,并且在那里我“导入”了代码)> 完成
请帮我。我无法从分配开始(即在同一源文件中尝试其他排序技术),因为我无法运行它。非常感谢你!