Java 如何使用对象的equals方法编写一个迭代文本文件并将所有元素添加到arrayList的方法
我正在尝试创建线对象并将它们添加到数组列表中。我遇到的问题是排除任何彼此相似的行。我已经创建了一个equals方法来比较两条线,以确定它们是否相等。我在使用while循环时遇到问题。我没有错误消息。它编译得很好。它只是不会从文本文件中读取。我被困住了,不知道从这里还能去哪里Java 如何使用对象的equals方法编写一个迭代文本文件并将所有元素添加到arrayList的方法,java,arraylist,while-loop,text-files,equals,Java,Arraylist,While Loop,Text Files,Equals,我正在尝试创建线对象并将它们添加到数组列表中。我遇到的问题是排除任何彼此相似的行。我已经创建了一个equals方法来比较两条线,以确定它们是否相等。我在使用while循环时遇到问题。我没有错误消息。它编译得很好。它只是不会从文本文件中读取。我被困住了,不知道从这里还能去哪里 public void read( File fileName ) throws Exception { reader = new Scanner(fileName); //---------------
public void read( File fileName ) throws Exception
{
reader = new Scanner(fileName);
//---------------------
//Have to read the first number before starting the loop
int numLines = reader.nextInt();
lines = new ArrayList <Line> (numLines);
//This loop adds a new Line object to the lines array for every line in the file read.
while( reader.hasNext() ) {
for( int i = 0; i < numLines; i++ ) {
int x = reader.nextInt();
int y = reader.nextInt();
Point beg = new Point(x,y);
x = reader.nextInt();
y = reader.nextInt();
Point end = new Point(x,y);
String color = reader.next();
Line l = new Line( beg, end, color );
if (l.equals(lines.get(i)))
break;
else
lines.add(i, l);
}
}
//Print the action to the console
System.out.println( "reading text file: " + fileName );
reader.close();
}
lines是一个数组列表。您不能像在代码中那样通过linesi访问ArrayList的元素i;您需要执行lines.geti。异常很明显,在void函数中不能返回任何内容。 因此,只需将代码修改为:
Line l = new Line( beg, end, color );
//if not equals, add it
if (!this.lines(i).equals(lines.get(i))){
//TODO: add to you collection
}
我希望这有帮助第一个例外已经被其他人解释过了,所以我将解释另一个例外: Void方法不能返回值 您创建了以下方法:
public void read( File fileName ) throws Exception
在while循环中,您可以执行以下操作:
if (this.lines(i).equals(lines(i)))
return null;
else
lines.add(i, l);
返回null,虽然可以在while循环中使用return,但如果将方法声明为void,则无法执行该操作。您应该改为使用break。对于没有返回值void的方法,您不应该返回null。您可以使用return。但是我想你想要的是继续。此外,考虑使用HASSET代替ALAYLIST,那么您不需要再检查是否相等,因为HASSET不允许重复。方法LimeSeT是未定义的类型。MyRead空洞方法不能返回Error消息SAS所有的值。您需要使用lines.GetIther没有lines I。是否有错误?还是刚才的输出?首先尝试一些调试,也许你可以看到错误在哪里,它编译得很好。它根本不运行。它编译得很好,但不运行??那么它是否给出了一个例外?它现在运行。它什么也不做。你可以试着调试你的项目,看看它是否通过你的循环和if/else运行