1
我想使自己的文本二進制排序方法,雖然我成功地編譯它,它並沒有真正完成排序工作,並返回空值。任何人都可以幫忙指出問題嗎?非常感謝!!(Java文本處理)排序文本方法和結果爲空?
class mergesort{
//main method
public static void main(String [] args) throws IOException{
String [] words = readWords(args[0]);
long t1 = new Date().getTime();
mergesort(words);
long t2 = new Date().getTime();
System.out.println("execution time:" + (t2 - t1) + " milliseconds");
prWords(words);
}
//method for reading file
public static String [] readWords(String fn)throws IOException{
BufferedReader br = new BufferedReader(new FileReader(fn));
String line = "";
StringBuilder allwords = new StringBuilder();
while ((line = br.readLine())!= null){
String [] items = line.trim().split("\\s+");
allwords.append(convertCase(items[0])+"\t");
}
br.close();
return allwords.toString().split("\t");
}
//Convert Case method
public static String convertCase(String n){
String firstWd = n;
firstWd = n.charAt(0) + n.substring(1).toLowerCase();
return firstWd;
}
public static String [] sortedWs = {};
public static void mergesort(String [] Ws){
sortedWs = new String[Ws.length];
mergesort(Ws, 0, Ws.length);
}
public static void mergesort(String [] Ws, int bgn, int end){
if (end - bgn == 1) return;
int mid = (bgn+end)/2;
mergesort(Ws, bgn, mid);
mergesort(Ws, mid, end);
merge(Ws, bgn, end);
}
public static void merge(String [] Ws, int bgn, int end){
int mid = (bgn+end)/2;
int b1 = bgn;
int b2 = end;
int x = 0;
while (b1 < mid && b2 < end) {
if (Ws[b1].compareTo(Ws[b2]) <= 0){
sortedWs[x] = Ws[b1]; b1++; x++;
} else {
sortedWs[x] = Ws[b2]; b2++; x++;
}
}
//copy the rest
if (b1 >= mid)
while (b2 < end) { sortedWs[x] = Ws[b2]; b2++; x++; }
if (b2 >= end)
while (b1 < mid) { sortedWs[x] = Ws[b1]; b1++; x++; }
for(int i = 0; i < end-bgn; i++) {
Ws[bgn+i] = sortedWs[i];
}
}
public static void prWords(String [] strs){
for (String x : strs){
System.out.println(x);
}
}
非常感謝,我是多麼心不在焉!大聲笑 – Yoyashi
這對大多數人來說很普遍。 :-)在學習使用調試器的時候,這是一個很好的工具,可以用來排除這些小錯誤(還有更大的錯誤)。 –
@Yoyashi,請原諒我提及它,但是當我審視你的問題歷史時,我認爲你忘記了將最有幫助的答案標記爲已接受? (答案左側的刻度線)[鏈接](http://stackoverflow.com/help/someone-answers) –