因此,我必须将此文件读入链接列表,但是当我运行代码时,它会显示每个scanner.next();
的未知来源有关如何修复它的任何想法?
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Scanner;
public class LinkedMain
{
public static <bankacctinfo> void main(String args[]) throws IOException
{
File fil1 = new File("AcctList");
Scanner scanner = new Scanner(fil1).useDelimiter("[,|\n/\r]+");
LinkedList<BankAcctInfo>list=new LinkedList<BankAcctInfo>();
String nameFirst;
String nameLast;
int pin;
double balance;
while(scanner.hasNext())
{
nameFirst = scanner.next();
nameLast = scanner.next();
pin = scanner.nextInt();
balance = scanner.nextDouble();
BankAcctInfo b1 = new BankAcctInfo(nameFirst, nameLast, pin, balance);
list.add(b1);
}
scanner.close();
}
答案 0 :(得分:0)
根据this thread,您的堆栈跟踪报告了一个未知的源错误,因为您使用的是JRE而不是JDK。您应确保已从Oracle的网站安装了最新版本的JDK,并将Eclipse设置为使用它。这将为您提供更多信息性的堆栈跟踪。
话虽如此,您的错误可能与使用Scanner
同时使用next()
和nextInt()
方法有关。我过去遇到了麻烦,因为它奇怪地处理换行符,详见this thread。基本上,nextInt()
不会消耗换行符。
我做的其中一个建议就是使用next()
,然后使用Integer.valueOf(x)
解析应该是整数的行。
所以:
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Scanner;
public class LinkedMain
{
public static <bankacctinfo> void main(String args[]) throws IOException
{
File fil1 = new File("AcctList");
Scanner scanner = new Scanner(fil1).useDelimiter("[,|\n/\r]+");
LinkedList<BankAcctInfo>list=new LinkedList<BankAcctInfo>();
String nameFirst;
String nameLast;
int pin;
double balance;
while(scanner.hasNext())
{
nameFirst = scanner.next();
nameLast = scanner.next();
pin = Integer.valueOf(scanner.next());
balance = Double.valueOf(scanner.nextDouble());
BankAcctInfo b1 = new BankAcctInfo(nameFirst, nameLast, pin, balance);
list.add(b1);
}
scanner.close();
}
}