while(hasNextInt())为什么不会结束循环?

while(hasNextInt())为什么不会结束循环?

需要设定一个 结束值

在Java中,当你使用`Scanner`类等读取用户输入时,在读取完最后一个输入后,如果你没有立即关闭`Scanner`对象而是继续读取输入,可能会出现`NoSuchElementException`异常。这是因为`Scanner`对象已经读取完了输入流,再次读取时就会抛出该异常。 如果你在`while`循环中读取用户输入,可以使用`Scanner`类的`hasNext()`方法检查是否有下一个输入项,以避免出现`NoSuchElementException`异常。例如: ``` import java.util.Scanner; public class MenuSelection { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int choice = 0; while (choice != 3) { System.out.println("1. Option 1"); System.out.println("2. Option 2"); System.out.println("3. Exit"); System.out.print("Enter your choice: "); if (scanner.hasNext()) { // 检查是否有下一个输入项 choice = scanner.nextInt(); } else { // 处理输入结束的情况 break; } switch (choice) { case 1: System.out.println("You chose Option 1"); break; case 2: System.out.println("You chose Option 2"); break; case 3: System.out.println("Goodbye!"); break; default: System.out.println("Invalid choice, please try again."); break; } } scanner.close(); // 关闭Scanner对象 } } ``` 在上述代码中,我们在`while`循环中读取用户输入,并在每次读取前使用`hasNext()`方法检查是否有下一个输入项。如果没有下一个输入项,即输入结束,我们使用`break`语句跳出循环。然后根据用户的选择执行相应的操作。最后,我们使用`Scanner`类的`close()`方法关闭`Scanner`对象。 需要注意的是,如果你在`while`循环中读取用户输入时,用户输入了一个非整数的字符串,`nextInt()`方法将抛出`InputMismatchException`异常。为了避免这种情况,你可以使用`Scanner`类的`hasNextInt()`方法检查下一个输入项是否为整数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值