为什么我在扫描仪中遇到java.util.NoSuchElementException错误

时间:2019-10-18 15:36:34

标签: java

我正在尝试读取主函数以及不同函数中的输入,为此,我创建了两个不同的扫描仪,这给了我一个错误,但是如果我仅在主函数中接受输入并在不同函数中传递值函数它不会给出错误,那么,我在这里缺少什么?我是Java的初学者。

import java.util.Scanner;
public class abc{
    public static void fun(){
        Scanner read = new Scanner(System.in);
        int a,b,c;
        a=read.nextInt();
        b=read.nextInt();
        c=read.nextInt();
        // some code

    }
    public static void main(String[] args){
       Scanner read=new Scanner(System.in);
       int t=read.nextInt();
       while(t>0){
           fun();
           t--;
       }


    }
}

2 个答案:

答案 0 :(得分:0)

为什么你不喜欢这样:-

import java.util.Scanner;
public class abc{
    public static void fun(int a, int b, int c){
        Scanner read = new Scanner(System.in);
        // some code

    }
    public static void main(String[] args){
       Scanner read=new Scanner(System.in);
       int t=read.nextInt();
       Object o = new Object();
       int a, b, c;
       while(t>0){
           a=read.nextInt();
           b=read.nextInt();
           c=read.nextInt();
           ob.fun(a, b, c);
           t--;
       }


    }
}

这可能不会给您任何错误。如果您不想这样做,则可以在类中而不是在方法中声明Scanner对象,然后尝试使用它。

答案 1 :(得分:0)

我认为为同一Scanner创建两个System.in是不正确的。为什么不使用单个:

public static void main(String[] args) {
    try (Scanner scan = new Scanner(System.in)) {
        int t = scan.nextInt();
        while (t > 0) {
            fun(scan);
            t--;
        }
    }
}

public static void fun(Scanner scan) {
    int a, b, c;
    a = scan.nextInt();
    b = scan.nextInt();
    c = scan.nextInt();
    // some code
}