Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较两个文本文件并输出不同的元素_Java_Algorithm_Text Files - Fatal编程技术网

Java 比较两个文本文件并输出不同的元素

Java 比较两个文本文件并输出不同的元素,java,algorithm,text-files,Java,Algorithm,Text Files,我正在写一个程序来做一个基本的学位审核。我想读一份课程文本文件和一份成绩单文本文件。每个文件有3列:系CPSC、课程号1710和学分数3。课程是指系、课程号和学分。如何将成绩单文件中的课程与课程文件中的课程进行比较。然后将不同的课程存储到新的arrayList中,并输出新的arrayList class Audit { private ArrayList<Course> curriculum; private ArrayList<Course> tra

我正在写一个程序来做一个基本的学位审核。我想读一份课程文本文件和一份成绩单文本文件。每个文件有3列:系CPSC、课程号1710和学分数3。课程是指系、课程号和学分。如何将成绩单文件中的课程与课程文件中的课程进行比较。然后将不同的课程存储到新的arrayList中,并输出新的arrayList

class Audit 
 {
    private ArrayList<Course> curriculum;
    private ArrayList<Course> transcript;

    public Audit(String curriculumFilename, String transcriptFilename) 
     {
        curriculum = readCourses(curriculumFilename);
        transcript = readCourses(transcriptFilename);
     }

public ArrayList<Course> degreeAudit() {
    ArrayList<Course> courses = new ArrayList();
    for(Course course : transcript) 
    {

        for (int i = 0; i < curriculum.size(); i++)
        {
                if (!(curriculum.get(i).getDept().equals(course.getDept()) && 
                   (curriculum.get(i).getNumber().equals(course.getNumber()) )))
                        courses.add(curriculum.get(i));                  
        }

    }
    return courses;   
}

public void displayCurriculum(String msg) 
{
    System.out.println(msg);
    System.out.println(curriculum);
}

public void displayTranscript(String msg) 
{
    System.out.println(msg);
    System.out.println(transcript);
}

/*
    Read ALL course information from the given filename.
    Each line of the filename must be in the format:  String  String  int
    For example:            CPSC  2740  3
*/
private ArrayList<Course> readCourses(String filename) 
{
    ArrayList<Course> courses = new ArrayList();      
    File file = new File(filename);
    try 
    {
        Scanner scanner = new Scanner(file);
        while (scanner.hasNextLine()) 
        {
            Course courseTemp = new Course();
            courseTemp.set(scanner.next(), scanner.next(), scanner.nextInt());
            courses.add(courseTemp);
        }
        scanner.close();
    }

    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

    return courses;

}

我从代码中了解到的是,您从成绩单中一次学习一门课程,然后将其与课程中的所有课程相匹配。如果在三个实体的基础上不匹配,则将其添加到课程列表中

好吧,我可以肯定地告诉你一件事,这会给你成绩单上的所有文件,不在课程中,但不会给你那些文件,在课程中,但不在成绩单上。这就是你想要的吗

另外,我不确定你想用equals方法做什么。而不是做

curriculum.get(i).getDept().equals(course.getDept())
你不应该做什么

curriculum.get(i).equals(course)

通过这个等于你想比较的课程。在你的课程中,你重写了equals方法。在相等法中,你只需根据系数和学分比较这两门课程,我认为你已经在做了。

你的问题是什么?看起来你在比较每门课程和每一份成绩单。那似乎不是你想做的。你是否只想比较课程1和成绩单1,课程2和成绩单2等等?老实说,你想要什么还不是很清楚——你还没有问一个问题。不,我为不清楚道歉。课程和成绩单文本文件都有部门、课程编号和学分。我的问题是如何将课程文本文件中的课程与成绩单文件中的课程进行比较@如果你能访问课程类,我会为它写一个equals方法。如果不是的话,我会写一个课程比较。我怎样才能在学位审核中使用这个方法呢@蓝蛙
curriculum.get(i).equals(course)