0

良い一日!このプログラムは、ファイル内の最初の n 語をソートする必要があります。メソッドmergeSort_srtを呼び出すときにパラメーターを渡すのを手伝ってください。これを実行すると、コンソールに次のように表示されます

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method mergeSort_srt(int[], int, int) in the type SortingAnalysis is not applicable for the arguments (String[], int, int)

特にJava言語でのプログラミングは初めてで、とても混乱しています。私を助けてください。自分でエラーを見つけたいのですが、オンラインでチュートリアルを読むだけでなく、実際の人々の助けが必要であり、このことについてほとんど知らないため、できません。どうもありがとうございました!

import java.io.*;
import java.util.*;

public class SortingAnalysis {

    public static void mergeSort_srt(int array[],int lo, int n){
        int low = lo;
        int high = n;
        if (low >= high) {
            return;
        }

        int middle = (low + high) / 2;
        mergeSort_srt(array, low, middle);
        mergeSort_srt(array, middle + 1, high);
        int end_low = middle;
        int start_high = middle + 1;
        while ((lo <= end_low) && (start_high <= high)) {
            if (array[low] < array[start_high]) {
                low++;
            } else {
                int Temp = array[start_high];
                for (int k = start_high- 1; k >= low; k--) {
                    array[k+1] = array[k];
                }
                array[low] = Temp;
                low++;
                end_low++;
                start_high++;
            }
        }
    }  

    public static void main(String[] args) {
        final int NO_OF_WORDS = 10000;
        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++;
            }
            long start = System.currentTimeMillis();

            mergeSort_srt(words, 0, words.length-1);
            long end = System.currentTimeMillis();
            System.out.println("Sorted Words: ");
            for(int j = 0; j < words.length; j++) {
                System.out.println(words[j]);
            }       
            System.out.print("Running time: " + (end - start) + "ms");

        }
        catch(SecurityException securityException) {
            System.err.println("You do not have proper privilege to access the files.");
            System.exit(1);
        }
        catch(FileNotFoundException fileNotFoundException) {
            System.err.println("Error accessing file");
            System.exit(1);
        }
    }
}
4

1 に答える 1

4

基本的に、このエラーが言っているのは、どこかに というメソッドがあるということですquicksort。クイックソート メソッドは、パラメーターとして文字列の配列 (String[]) と 2 つの整数を取ります。しかし、あなたのコードでは、 type のオブジェクトでそれを呼び出そうとしましたSortingAnalysis。コンパイラは、この種のオブジェクトを受け取るクイックソートと呼ばれるメソッドを見つけることができないため、このエラーをスローします。

ただし、投稿したコードで呼び出されたメソッドへの呼び出しが見つからないためquicksort、コードまたはエラー メッセージのいずれかが古くなっていると想定する必要があります。

OPコードの編集によるEDIT

コードが正確になったので、問題が何であるかは明らかです。メソッドmergeSort_srtは次のように宣言されていますmergeSort_srt(int array[],int lo, int n)。最初のパラメーターには整数の配列が必要です。メイン メソッドでは、次のように呼び出します。mergeSort_srt(words, 0, words.length-1);ここで、 は整数ではなくStringwordsの配列です。

これを修正するには、mergeSort_srt メソッドを次のように更新する必要があります。

  1. 文字列の配列 (String[]) を入力として受け取る
  2. すべて整数またはその他の数値に対して記述されているため、文字列で機能するように並べ替えロジックを更新します。
于 2012-07-08T13:07:30.350 に答える