![](/img/trans.png)
[英]Read two files (text) and compare for common values and output the string?
[英]Compare two text files and output the elements that are different
我正在編寫程序進行基礎學位審核。 我想閱讀課程文本文件和成績單文本文件。 每個文件都有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;
}
}
@Override
public boolean equals(Object rhs) {
if(rhs == null) return false;
if(rhs == this) return true;
if(!(rhs instanceof Course)) return false;
Course crse = (Course) rhs;
if(!dept.equals(((Course)rhs).dept)) return false;
if(number!=((Course)rhs).number) return false;
if(credits!=((Course)rhs).credits) return false;
return true;
}
我從代碼中了解到,您一次要學習一個成績單,然后將其與課程中的所有課程相匹配。 如果is在三個實體的基礎上不匹配,則將其添加到列表課程中。
好吧,我可以肯定地告訴你,這將為您提供成績單中所有不在課程表中的文件,但不會為您提供課程中但不在成績單中的文件。 那是你要的嗎?
另外,我不確定您要使用equals方法做什么。 而不是做
curriculum.get(i).getDept().equals(course.getDept())
你不應該在做什么
curriculum.get(i).equals(course)
並通過此等於您要與之比較的過程。 在課程類中,您將覆蓋equals方法。 用均等的方法,您只需要根據dept, number and credits
比較兩個課程,我認為您已經在做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.