首页 > Java > java教程 > 为什么我的 Java 扫描器会抛出 NoSuchElementException,如何修复它?

为什么我的 Java 扫描器会抛出 NoSuchElementException,如何修复它?

Barbara Streisand
发布: 2024-12-05 15:03:14
原创
651 人浏览过

Why Does My Java Scanner Throw a NoSuchElementException, and How Can I Fix It?

NoSuchElementException Java.Util.Scanner 的挫败感

遇到“NoSuchElementException”错误可能会令人困惑,特别是对于像您这样的 Java 新手来说。当 Scanner 类无法从输入流检索下一个标记时,会发生此错误。让我们深入研究您的特定代码以找出根本原因:

import java.util.Scanner;

public class Addition {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    // Problem: Reading input values without checking for input availability

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt(); // Exception occurs here when no input is provided

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt(); // Exception occurs here if input is not available for this prompt

    sum = number1 + number2; // Addition occurs, assuming input values are available

    System.out.printf("Sum is %d\n", sum); // Displays the sum, if input is available
  }
}
登录后复制

问题在于代码尝试读取输入而不首先验证输入是否可用。如果用户未提供输入或输入整数以外的内容,则 input.nextInt() 方法会引发“NoSuchElementException”。

解决方案:

消除对于这个问题,我们需要在尝试检索之前检查输入可用性it:

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle the case where no input is provided
}
登录后复制

解释:

hasNextInt() 方法检查输入流中的下一个标记是否是整数。如果返回 true,则可以使用 input.nextInt() 方法来检索整数。否则,代码可以优雅地处理这种情况,例如将 number1 设置为 0 或显示错误消息。

通过实现此检查,您的代码将不再抛出“NoSuchElementException”并且将按预期运行,从而允许用户输入整数并计算其总和。

以上是为什么我的 Java 扫描器会抛出 NoSuchElementException,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板