gpt4 book ai didi

Java 抛出 NoSuchElementException

转载 作者:行者123 更新时间:2023-12-02 07:27:56 32 4
gpt4 key购买 nike

如果在读取文件时缺少字段,我应该捕获 NoSuchElementException。如果缺少一个字段,我只需要跳到文件的下一行。我的问题是,我在哪里实现我的 try/catch 代码来做到这一点?这是代码:

String petType;
int lineNumber = 0;

while(input.hasNext()) {

petType = input.next();
lineNumber++;

//I'm thinking of doing it for every if(input.hasNext()) but that would be too messy to read.
if(petType.equals("BIRD")) {
if(input.hasNext())
String name = input.next();
if(input.hasNext())
String owner = input.next();
if(input.hasNextDouble())
double weight = input.nextDouble();
if(input.hasNextBoolean())
boolean clipped = input.nextBoolean();
Bird x = new Bird(name,owner,weight,clipped);
object.addPet(x);
}

}

最佳答案

只需摆脱所有 hasNextXXX() 调用,让 nextXXX() 为您抛出异常即可。

String petType;
int lineNumber = 0;

while (input.hasNext()) {
lineNumber++;
try {
petType = input.next();
if (petType.equals("BIRD")) {
String name = input.next();
String owner = input.next();
double weight = input.nextDouble();
boolean clipped = input.nextBoolean();
Bird x = new Bird(name, owner, weight, clipped);
object.addPet(x);
}
}
catch (NoSuchElementException nse) {
System.out.println("something is missing in line " + lineNumber);
}
}

话虽如此,我认为最好保留所有 hasNextXXX 调用,并在其中任何一个返回 false 时中断当前迭代(使用 继续)。这将实现与捕获异常相同的效果,但不会产生使用 try/catch 的不必要的开销。

我猜你的老师只是想让你了解异常,不过......

关于Java 抛出 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300718/

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