目标是用由来自单独文本文件的信息组成的自定义Country对象填充ArrayList。 while循环为我提供了“期望的标识符”错误,而我正竭尽全力解决该问题。
import java.util.Scanner;
import java.util.ArrayList;
import java.io.File;
import java.io.FileNotFoundException;
public class Driver {
public static void main(String[] args) {
//Instance variables
Scanner sc;
Country next = new Country();
String reader;
int size;
ArrayList<Country> ledger = new ArrayList<Country>();
//Suppressing this exception because I know it's there.
@SuppressWarnings("unreported exception FileNotFoundException; must be caught or declared to be thrown")
sc = new Scanner(new File("testLedger.txt"));
//"<identifier> expected" error
while (sc.hasNext()) {
next.setName(sc.nextLine());
next.setFaith(sc.nextLine());
next.setInfo(sc.nextLine());
next.setOrder(sc.nextInt());
ledger.add(next);
}
//Test accessor methods and filling of the ArrayList
for (int i = 0; i < ledger.size(); i++) {
System.out.println(ledger.get(i));
}
}
}
答案 0 :(得分:0)
首先,您的代码将无法编译。您需要处理异常。在这种情况下,您只是在运行测试,因此可以在main方法中使用Throw。
try {
sc = new Scanner(new File("testes.txt"));
while (sc.hasNext()) {
next.setName(sc.nextLine());
next.setFaith(sc.nextLine());
next.setInfo(sc.nextLine());
next.setOrder(sc.nextInt());
ledger.add(next);
}
} catch (FileNotFoundException e) {
System.out.println(e);
}
第二,查看Country类的设置器,看看方法类型是否与您所使用的一段时间兼容。
例如:
sc.nextLine () // will return a String
sc.nextInt () // will return an int
您的二传手应该与此兼容
public void setOrder(int order){
this.order = order;
}
最后,正如@Dawood在评论中提到的,您需要查看stackoverflow.com/q/13102045