gpt4 book ai didi

java - 合并排序中的参数传递

转载 作者:行者123 更新时间:2023-12-01 19:03:11 25 4
gpt4 key购买 nike

美好的一天!该程序应该对文件中的前 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);
}
}
}

最佳答案

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

虽然我在您发布的代码中找不到任何对名为 quicksort 的方法的调用,但我不得不假设代码或错误消息已过时。

由于OP代码编辑而进行编辑:

现在您的代码是准确的,问题所在就很明显了。您的方法 mergeSort_srt 声明如下:mergeSort_srt(int array[],int lo, int n)。它期望第一个参数中有一个整数数组。在你的 main 方法中,你可以像这样调用它:mergeSort_srt(words, 0, Words.length-1);,其中wordsStrings<的数组/em>,不是整数。

要解决此问题,您需要将 mergeSort_srt 方法更新为:

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

关于java - 合并排序中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11383365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com