对于这个程序,我必须合并两个文件,一个包含学生姓名和ID号,另一个包含类ID代码。然后,我必须将ID代码与学生匹配到课程的ID代码,并按字母顺序将它们分类为新的课程名单。
我必须使用数组和二进制搜索。
我真的不确定如何做到这一点。我没有多少,但我拥有的是:
import java.io.*;
import java.util.Scanner;
public class MergingFiles {
public static void main(String[] args) throws IOException {
Scanner studentFile = new Scanner(new File("students.txt"));
Scanner classFile = new Scanner(new File("classes.txt"));
while (studentFile.hasNext()){
}
while (classFile.hasNext()){
}
//as long as another line, keeps running
//sort students alphabetically
//2 substrings, one id #, one students
//read id codes, match with name
//create new roster file
}
}
我知道我需要将内容放入数组中,但是什么样的数组以及如何编写?
感谢任何帮助。
感谢。
答案 0 :(得分:0)
怎么样:
1。)创建一个包含变量Student
和name
的{{1}}类
2。)扫描学生列表时,将其添加到id
。数组无法调整大小(似乎您不允许使用列表),所以请考虑一下您如何知道阵列的大小,以便您不必使用调整它的大小(除非你想添加代码来动态调整数组大小,这也是可行的。)
3.)排序Student[]
(二进制搜索的要求)。如果您必须手动执行此操作,那么您必须编写自己的排序实现(考虑您将要比较的Student[]
对象的哪个字段)。如果您被允许使用API sort methods(并且您已经涵盖了界面),那么只需Student
实施Student
,然后拨打Comparable
。
4。)在扫描类文件时,我假设你需要在这里使用二进制搜索来查找Arrays.sort
(基于他们的id),但我不确定输入文件的格式,所以我不确定我能给你太多的指导。
答案 1 :(得分:0)
试试这个
public static File mergeAllFiles(File[]files,File dest) throws IOException{
List<String> paths =
Stream.of(files).map(File::getPath).collect(Collectors.toList());
for (String string : paths) {
List<String> allLines = Files.readAllLines(Paths.get(string));
Files.write(Path.of(dest.getPath()),allLines, StandardOpenOption.APPEND);
}
return dest;
}