【发布时间】:2013-02-28 21:11:34
【问题描述】:
如果有人可以帮助我,我将不胜感激。我正在尝试进行外部排序,但我陷入了合并的困境。我知道我应该如何合并它只是不确定要使用什么功能。
现在我正在尝试读取多个小文本文件的第一个单词,并将它们存储在文件数量大小的字符串数组中。所以基本上我会有一个每个文件的第一个单词的字符串数组。然后我根据字母顺序确定哪个是最小的并将其写入一个新文件,之后我将读取该最小单词的文件的下一个单词。该单词将放置在字符串数组中输出的最小单词的位置,并将其与其他文件中第一个单词的其余部分进行比较。这将不断重复,直到所有单词都被排序。
我遇到的主要问题是我正在使用扫描仪,并且在第一次比较它之后无法将最小的单词与文件中的下一个单词切换,因为扫描仪没有保留它所拥有的内容读。我知道 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)
{
}
【问题讨论】:
-
哦,请格式化这一段,分成多段。我很难读到这篇文章,抱歉。
-
对不起,我有点重新格式化该段落。只是我真的需要这样做,我真的被困在这部分了。
-
所有文件都只有一行吗?
-
基本上是的。因为当我对它进行排序时,我所做的只是在每个单词之间添加一个空格。