gpt4 book ai didi

java - 输入不匹配异常:空

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:07 27 4
gpt4 key购买 nike

    int EID, ESSN, EM, FSSN, FM;
String EN, EEN, FN;
Scanner Ein = new Scanner(employer);
Scanner Fin = new Scanner(filers);
Ein.useDelimiter(", *");
Fin.useDelimiter(", *");
ArrayList<Employer> EmployIn = new ArrayList<Employer>();
ArrayList<Filer> FilerIn = new ArrayList<Filer>();
while (Ein.hasNextLine())
{
EN = Ein.next(); EID = Ein.nextInt(); EEN = Ein.next(); ESSN = Ein.nextInt(); EM = Ein.nextInt();
EmployIn.add(new Employer(EN, EID,EEN,ESSN,EM));

}

这是我正在处理的一段代码。我不断收到 java.util,InputMismatchException:null(在 java.util.Scanner 中)

在雇主文件中,它的结构如下:

Google, 0, BOX CHARLES, 724113610, 50
Microsoft, 2, YOUNG THOM, 813068590, 50
Amazon, 4, MCGUIRE MARK, 309582302, 50
Facebook, 8, MOFFITT DON, 206516583, 50

我不知道为什么会出现不匹配。如果有人可以提供帮助,那就太好了。

最佳答案

您的扫描仪模式有误。

模式分隔符是“, *”,它被解释为正则表达式,由一个逗号和后跟任意数量的空格组成。

行尾遇到最后一个值,50,后面没有,,所以没有匹配,表达式失败.

如果您将代码每行 1 个语句,这对您来说会更明显:

EN = Ein.next();
EID = Ein.nextInt();
EEN = Ein.next();
ESSN = Ein.nextInt();
EM = Ein.nextInt();

然后异常堆栈跟踪将指出失败仅发生在 EM 行上。

如果您更改模式以匹配逗号或行尾,它会起作用:

Ein.useDelimiter(Pattern.compile("(, *| *$)", Pattern.MULTILINE));

你应该比我更聪明地使用这个模式,但下面的代码对我有用:

public static void main(String[] args) throws FileNotFoundException {
int EID, ESSN, EM, FSSN, FM;
String EN, EEN, FN;
Scanner Ein = new Scanner(new File("employers.txt"));
Ein.useDelimiter(Pattern.compile("(, *| *$)", Pattern.MULTILINE));
while (Ein.hasNextLine()) {
EN = Ein.next();
EID = Ein.nextInt();
EEN = Ein.next();
ESSN = Ein.nextInt();
EM = Ein.nextInt();
System.out.printf("%s %d %s %d %d %n", EN, EID, EEN, ESSN, EM);
}
}

关于java - 输入不匹配异常:空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com