当使用 gradle run
启动应用程序时,如果遇到 java.util.Scanner
抛出 NoSuchElementException
,通常是因为 Scanner
对象试图从输入源(如文件、控制台等)读取数据,但没有找到预期的输入。
Scanner
对象试图访问不存在的下一个元素时,会抛出此异常。Scanner
期望的格式不匹配。Scanner
后,没有正确关闭它,导致后续操作出现问题。确保输入文件存在且不为空,或者控制台输入正确。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Main {
public static void main(String[] args) {
File file = new File("input.txt");
Scanner scanner = null;
try {
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("File not found.");
} finally {
if (scanner != null) {
scanner.close();
}
}
}
}
确保输入数据的格式与 Scanner
期望的格式匹配。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("Enter an integer:");
int number = scanner.nextInt();
System.out.println("You entered: " + number);
} catch (Exception e) {
System.out.println("Invalid input format.");
} finally {
scanner.close();
}
}
}
使用 try-with-resources
语句确保 Scanner
对象在使用完后自动关闭。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Main {
public static void main(String[] args) {
File file = new File("input.txt");
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("File not found.");
}
}
}
通过以上方法,可以有效解决 java.util.Scanner
抛出 NoSuchElementException
的问题。确保输入源正确、格式匹配,并正确管理资源,可以避免此类异常的发生。
领取专属 10元无门槛券
手把手带您无忧上云