如果有人可以帮助我,我真的很感激。我正在尝试进行外部排序,但我陷入了合并的困境。我知道我应该如何合并它只是不确定要使用什么功能。
现在,我正在尝试读取多个小文本文件的第一个单词,并将它们存储在文件数量大小的字符串数组中。所以基本上我会有一个每个文件的第一个单词的字符串数组。然后我确定哪个是最小的字母顺序并将其写入一个新文件,之后我将读取该最小单词的文件的下一个单词。该单词将放置在字符串数组中输出的最小单词的位置,并将其与其他文件中第一个单词的其余部分进行比较。这将不断重复,直到所有单词都被排序。
我遇到的主要问题是我正在使用扫描仪,并且在第一次比较它之后无法将最小的单词与文件中的下一个单词切换,因为扫描仪不会保留它所读取的内容。我知道 readline 可以,但由于我的文件都是由空格分隔的所有单词,所以我不能使用 readline。有人可以指导我使用无法帮助我解决此问题的足够阅读功能。
for (int i = 0; i<B;i++)
{
try
{
BufferedReader ins = new BufferedReader(new FileReader(Run-"+ i + ".txt"));
Scanner scanner2 = new Scanner(ins);
temp3[i] = scanner2.next();
System.out.println(temp3[i]);
}
catch(IOException e)
{
}
}
for(int i=0;i<N;i++)
{
String smallest = temp3[0];
int smallestfile = 0;
for(j=0;j<B;j++)
{
int comparisonResult = smallest.compareTo(temp3[j]);
if(comparisonResult>0)
{
smallest = temp3[j];
smallestfile = j;
}
}
BufferedReader ins = new BufferedReader(new FileReader("C:/Run-"+ smallestfile + ".txt"));
Scanner scanner2 = new Scanner(ins);
if(scanner2.hasNext())
{
temp3[smallestfile]=scanner2.next();
}
}
}
catch(Exception e)
{
}