当前位置: 首页 > 知识库问答 >
问题:

在不同的方法中插入不同的扫描程序时出现异常

艾泰
2023-03-14
public static void main(String[] args) {
        Class2 cls = new Class2();
        cls.test();
    }
  public class Class2 {
 
        public Class2() {
        }
        
    public void test()
    {
        test2();
        test3();
        
    }
    
    public void test2() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("give a String:");
        String str = scanner.next(); 
        scanner.close();
    }
    public void test3()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("give another String:");
        String str = sc.next();
        sc.close();
        
    }

}
Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1478)
    at Class2.test3(Class2.java:25)
    at Class2.test(Class2.java:11)
    at Class1.main(Class1.java:12)

我如何处理这个异常?通过在每种方法中保留一个不同的扫描器!

共有1个答案

赵朝
2023-03-14

下面是您的经过修改的代码,并附有适当的注释。

class2.java

import java.util.Scanner;
public class Class2 {
    /*You dont have to create multiple scanner objects*/
    Scanner scan = new Scanner(System.in);

    public void test() {
        /*In order to run the methods in this class itself
        * you have to use static keyword or create object*/
        Class2 obj = new Class2();
        obj.test2();
        obj.test3();
        scan.close();
        /* As this method is run, scan.close() should be placed when you want to close InputStream
        * you will learn this in Java Streams*/
    }

    public void test2() {
        System.out.println("give a String:");
        String str = scan.nextLine();
    }
    public void test3() {
        System.out.println("give another String:");
        String str = scan.nextLine();

    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        Class2 cls = new Class2();
        cls.test();
    }
}
 类似资料:
  • 本文向大家介绍不同js异步函数同步的实现方法,包括了不同js异步函数同步的实现方法的使用技巧和注意事项,需要的朋友参考一下 不同函数达到同步的函数模拟 funcList是函数执行函数的队列,其中回调函数中flag=true是同步标记量 以上这篇不同js异步函数同步的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 已经为此纠结了一天,来来回回看论坛,没有结果。任何人都可以告诉我为什么函数aMenu()的第二次调用返回一个零,而不等待新的用户输入?我尝试了各种方法,如hasNextInt()、nextLine(),但都不起作用。hasNextInt()不应该在用户写东西之前阻止吗?我该怎么解决这个?多谢了。

  • 我有两个Maven模块。第一个,叫做“应用程序”,包含了只包含以下行的Application类: 在同一个Maven模块和包中,我有一个,它使用,然后使用下面描述的其他Maven模块的组件。 另一个名为“model”的Maven模块包含组件(crud存储库、实体等)。所有这些类都与第一个Maven模块()位于相同的包结构下,但都位于该模块的子包中,比如,等。 所以,流程是这样的: Maven模块包

  • 我刚开始我的大学java课程,在扫描器类中不断得到这个错误。 我不断得到的错误是:

  • 本文向大家介绍在Python程序中查找素数的不同方法,包括了在Python程序中查找素数的不同方法的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将探索不同的方法来查找给定数字是否有效。让我们开始吧! 方法1 这是查找质数的一般方法。 如果数字小于或等于1,则返回False。 如果数字可被任何数字整除,则该函数将返回False。 循环后,返回True。 示例 输出结果 如果运行上面的代码

  • 我正在做一个场景,我只想接受1或2作为输入,并且在输入另一个数字或输入无效时处理错误。为此,我正在做: 如果我添加在中,由于选项的范围在try内,它会给出一个错误。我希望它继续要求用户输入有效数字,即1或2,但如果我输入任何字符,它将进入并退出。