嘿,伙计们只是想看看我的想法是否有效,我在学习java的第二学期。 这是hw任务的指示: 设计一个类,检查两个文本文件的内容是否相同,如果不相同,则确定有多少行不同。如果它们在一个或多个字符中不同,则行不同。 所以,我想我应该逐行阅读文本,将每一行转换为字符串,然后将每一行存储在数组中的一个位置。一旦我完成了这一步,我就必须使用数组。然后,我计划浏览每个数组并进行比较。 我对这个问题的看法是否正确?
import java.io.*;
import java.util.*;
public class myfilereader
{
public static void main (String[] args) throws java.io.IOException
{
ArrayList<String> Diff = new ArrayList<String>();
Scanner s = new Scanner(new File("/Users/Home/Desktop/File2.txt"));
ArrayList<String> ArrayList1 = new ArrayList<String>();
while (s.hasNext())
{
ArrayList1.add(s.next());
}
s.close();
Scanner s1 = new Scanner(new File("/Users/Home/Desktop/File1.txt"));
ArrayList<String> ArrayList2 = new ArrayList<String>();
while (s.hasNext())
{
ArrayList2.add(s1.next());
}
s1.close();
HashSet hs = new HashSet();
for(String i : ArrayList1) hs.add(i);
for(String i : ArrayList2)
{
if(!hs.add(i))
Diff.add(i);
}
String result = "+";
for (int i = 0; i < Diff.size(); i++)
{
result += " " + Diff.get(i);
}
System.out.println(result);
}
}
以下是我得到的确切错误“
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Scanner.java:1046)
at java.util.Scanner.hasNext(Scanner.java:1310)
at myfilereader.main(myfilereader.java:19)