我不断收到Scanner的in.nextXXXX

时间:2018-07-19 14:45:13

标签: java input java.util.scanner nosuchelementexception

我不知道发生了什么。过去,我已经多次使用Scanner进行输入,并且从未遇到任何长期问题。现在,无论我做什么,每次我要求用户输入时,我都会不断得到NoSuchElementException。我已经检查了先前的答案,但它们没有帮助(大多数情况下,他们似乎建议对hasnextXXXX使用一段时间,但这实际上无济于事,因为除了我的代码没有例外,我的代码什么也不做)。

下面是错误和我的代码(最新迭代,在setter中调用它之前,我在构造函数中调用它,总是相同的异常)。到底是怎么回事?!请帮忙!!!

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Character.setAttack(Character.java:24)
    at Character.setAll(Character.java:15)
    at Fight.main(Fight.java:25)

    import java.util.Scanner;

    public class Character {

        private int attack;
        private Scanner in;

        public Character() {

            in = new Scanner(System.in);
        }

        public void setAll() {
            setAttack(0);
        }

        public int getAttack() {
            return attack;
        }

        public void setAttack(int attack) {
            Scanner scan = new Scanner(System.in);
            attack = scan.nextInt();
            this.attack = attack;
            System.out.println("character// attack is " + attack);//test
        }

    }

1 个答案:

答案 0 :(得分:0)

如果您删除第二次启动扫描程序,并将setAttack()方法修复为以下问题:

public void setAttack(int attack) {
         attack = in.nextInt();
         this.attack = attack;
         System.out.println("character// attack is "+attack);//test
    }

...并输入int进行控制台,一切正常。

相关问题