当我执行程序时,程序显示java.util.NoSuchElementException:找不到行

时间:2020-04-25 02:15:56

标签: java compiler-errors java.util.scanner

我对Java有点陌生,我想知道我在代码中做错了什么。问题出在“ System.out.println(pw.next());”。此代码适用于类似Pokemon的游戏,并且扫描仪应扫描该人的用户名。我还远远没有完成代码,而且布局有点奇怪,因为我自己尝试修复错误。

如果有人有创建有趣游戏的提示,也将不胜感激。

package test;
import java.lang.Math;
import java.util.*;

public class Pokemon {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Welcome to Daniel's Game");
        System.out.println("\nFire. Water. Earth. Air. The four nations lived in harmony until the Avatar attacked. \nFueled by anger, this avatar, whose name remains unknown, has sought to take over the world.\nLegends say that he lives deep in the Himalayas and wields the power of all four elements, but nobody can say for sure");
        System.out.println("It is your job to save the world from catastrophe");
        System.out.println("Are you up for the Challenge?");
        String y = sc.next();
        if(y.equals("yes")||y.equals("Yes")) {
            System.out.println("You better be");
        } else {
            System.out.println("The world ends cuz you suck");
            System.exit(0);
        }
        sc.close();
        name();

    }
    public static void name() {
        System.out.println("What is Your Name?");
        Scanner pw = new Scanner(System.in);
        String o = pw.next();
        pw.close();
        Scanner ew = new Scanner(System.in);
        System.out.println("\nChoose a Pokemon: \n1. Fire \n2. Water\n 3. Earth \n4. Air");

        int x = ew.nextInt();

        ew.close();
    }

}

2 个答案:

答案 0 :(得分:1)

下面应该可以工作:

package test;
import java.lang.Math;
import java.util.*;
public class Pokemon {

    private static Scanner sc;

    public static void main(String[] args) {
         sc = new Scanner(System.in);
        System.out.println("Welcome to Daniel's Game");
        System.out.println("\nFire. Water. Earth. Air. The four nations lived in harmony until the Avatar attacked. \nFueled by anger, this avatar, whose name remains unknown, has sought to take over the world.\nLegends say that he lives deep in the Himalayas and wields the power of all four elements, but nobody can say for sure");
        System.out.println("It is your job to save the world from catastrophe");
        System.out.println("Are you up for the Challenge?");
        String y = sc.next();
        if(y.equals("yes")||y.equals("Yes")) {
            System.out.println("You better be");
        } else {
            System.out.println("The world ends cuz you suck");
            System.exit(0);
        }
       // sc.close();
        name();

    }
    public static void name() {
        System.out.println("What is Your Name?");
        String name = sc.next();
       // Scanner pw = new Scanner(System.in);
       // String o = pw.next();
      //  pw.close();
        //Scanner ew = new Scanner(System.in);
        System.out.println("\nChoose a Pokemon: \n1. Fire \n2. Water\n 3. Earth \n4. Air");

        int x = sc.nextInt();

        sc.close();
    }

}

答案 1 :(得分:0)

也许您的错误发生是因为您使用Scanners的方式很糟糕,只需一个就足够了,并将其作为参数传递给主类是一个很好的习惯,因为您可以在函数终止后将其关闭。 / p>

尝试一下...

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Welcome to Daniel's Game");
        System.out.println("\nFire. Water. Earth. Air. The four nations lived in harmony until the Avatar attacked. \nFueled by anger, this avatar, whose name remains unknown, has sought to take over the world.\nLegends say that he lives deep in the Himalayas and wields the power of all four elements, but nobody can say for sure");
        System.out.println("It is your job to save the world from catastrophe");
        System.out.println("Are you up for the Challenge?");
        String y = sc.next();
        if (y.equals("yes") || y.equals("Yes")) {
            System.out.println("You better be");
        } else {
            System.out.println("The world ends cuz you suck");
            System.exit(0);
        }
        name(sc);
        sc.close();
}

public static void name(Scanner sc) {
        System.out.println("What is Your Name?");
        String o = sc.next();
        System.out.println("\nChoose a Pokemon: \n1. Fire \n2. Water\n 3. Earth \n4. Air");
        int x = sc.nextInt();
}