线程" main"中的例外情况java.util.Scanner.next(未知来源)java.util.Scanner.throwFor(未知来源)的java.util.NoSuchElementException

时间:2017-10-30 16:59:11

标签: java eclipse java.util.scanner

我收到java.util.NoSuchElementException

扫描仪仅工作一次(第一次循环)。

完整堆栈跟踪是:

  

线程中的异常" main"

java.util.NoSuchElementException at

java.util.Scanner.throwFor(Unknown Source) at

java.util.Scanner.next(Unknown Source)

你可以帮我修改我的代码:

import java.util.Scanner;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        String answer;
        do
        {
            input = new Scanner(System.in);

            System.out.println("MAIN MENU");
            System.out.println("- Start a new Game (S)");
            System.out.println("- Exit (E)");
            System.out.println("Please enter your choice: ");

            answer = input.next();

            if (answer.equals("s") || answer.equals("S"))
            {
                Hangman h1 = new Hangman();
                h1.getWord();
                h1.printData();
                h1.CountTheLetters();
                h1.GiveTheLetters();
            }
        } while (!answer.equals("e") && !answer.equals("E"));
        input.close();
        System.out.println("Thank you for the game");
    }
}

2 个答案:

答案 0 :(得分:0)

尝试在do-while循环中实例化Scanner对象,而不是在main函数中实例化它。

答案 1 :(得分:0)

您的代码似乎可以在Eclipse上运行,您使用的是像Ideone这样的在线IDE,因为在线IDE只需要输入一次,就像所有输入一样只有一次因此存在运行时错误我建议您运行代码在日食上如果那似乎不起作用,就像我在下面所做的那样:

import java.util.Scanner;
import java.io.*;



public class Main {
    public static void funct(Scanner input){

        System.out.println("MAIN MENU");
         System.out.println("- Start a new Game (S)");
        System.out.println("- Exit (E)");
        System.out.println("Please enter your choice: ");
        String answer = input.next();

         if(answer.equals("e")||answer.equals("E")){
            System.out.println("Thank You For the Game");
         }
         else{
            funct(input);
         }

    }
public static void main(String[] args) throws IOException {

    Scanner input = new Scanner(System.in);
    funct(input);

 }
}