Java 在合并排序中传递参数

Java 在合并排序中传递参数,java,merge,parameter-passing,mergesort,Java,Merge,Parameter Passing,Mergesort,你好!这个程序应该对文件中的前n个字进行排序。当我调用mergeSort\u 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 argum

你好!这个程序应该对文件中的前n个字进行排序。当我调用mergeSort\u 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);
        }
    }
}
import java.io.*;
导入java.util.*;
公共类排序分析{
公共静态无效合并排序(int数组[],int lo,int n){
int低=低;
int高=n;
如果(低>=高){
返回;
}
int-middle=(低+高)/2;
合并排序\u srt(数组、低、中);
合并排序\u srt(阵列,中+1,高);
int end_低=中;
int start_high=中间+1;

而((lo这个错误本质上是说,您在某处有一个名为
快速排序
的方法。快速排序方法将字符串数组(String[])作为参数,和两个整数。但在您的代码中,您尝试使用类型为
SortingAnalysis
的对象调用它。由于编译器找不到接受此类对象的名为quicksort的方法,因此会抛出此错误

虽然在您发布的代码中找不到对名为
快速排序
的方法的任何调用,但我必须假设代码或错误消息已过期

由于操作代码编辑而进行编辑

既然您的代码是准确的,那么问题就显而易见了。您的方法
mergeSort\u srt
被声明为:
mergeSort\u srt(int array[],int lo,int n)
。它在第一个参数中需要一个整数数组。在主方法中,您可以这样调用它:
mergeSort\u srt(words,0,words.length-1);
,其中
单词
是字符串数组,而不是整数

要解决此问题,您需要将mergeSort\u srt方法更新为:

  • 将字符串数组(字符串[])作为输入
  • 更新排序逻辑以处理字符串,因为它现在都是为整数或其他数字编写的

  • 从本质上讲,这个错误说明您在某个地方有一个名为
    快速排序
    的方法。快速排序方法将字符串数组(String[])作为参数,和两个整数。但在您的代码中,您尝试使用类型为
    SortingAnalysis
    的对象调用它。由于编译器找不到接受此类对象的名为quicksort的方法,因此会抛出此错误

    虽然在您发布的代码中找不到对名为
    快速排序
    的方法的任何调用,但我必须假设代码或错误消息已过期

    由于操作代码编辑而进行编辑

    既然您的代码是准确的,那么问题就显而易见了。您的方法
    mergeSort\u srt
    被声明为:
    mergeSort\u srt(int array[],int lo,int n)
    。它在第一个参数中需要一个整数数组。在主方法中,您可以这样调用它:
    mergeSort\u srt(words,0,words.length-1);
    ,其中
    单词
    是字符串数组,而不是整数

    要解决此问题,您需要将mergeSort\u srt方法更新为:

  • 将字符串数组(字符串[])作为输入
  • 更新排序逻辑以处理字符串,因为它现在都是为整数或其他数字编写的

  • 哎哟,对不起,我刚从另一个窗口复制粘贴了错误。谢谢识别!但这确实是mergeSort\u srt。我真正的问题是传递参数。哎哟,对不起,我刚从另一个窗口复制粘贴了错误。谢谢识别!但那确实是mergeSort\u srt。我真正的问题是传递参数。