1
私は独自のテキストバイナリソートメソッドを作成しようとしていますが、コンパイルは成功しましたが、ソートジョブは完了せず、null値が返されます。誰かが問題を指摘するのを助けてもらえますかどうもありがとう!! merge()
で(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);
}
}
どうもありがとうございます、私は不自由な方です! lol – Yoyashi
それは私たちのほとんどに共通しています。 :-)ある時点で、デバッガを使うことを学びます。それは、そのような小さなエラー(およびそれ以上のもの)を分類するための素晴らしいツールです。 –
@ Yoyashi、それについて言及してくれてありがとうございます。しかし、あなたの質問履歴を見てみると、最も役立つ回答を受け入れたことを忘れているようです。 (答えの左に目盛り)[リンク](http://stackoverflow.com/help/someone-answers) –