使用Scanner - 在java.util.Scanner.next(未知来源)java.util.NoSuchElementException

时间:2013-02-22 15:38:28

标签: java system.in

我的完整代码已粘贴here。以下是与我的问题相关的两种方法。

private static boolean playGameAgain()
{
        char playAgain = 'y';
        Scanner input = new Scanner(System.in);
        while(playAgain != 'n')
        {
                System.out.println("Go again?(y/n)");
/// PROBLEM HERE....  Somehow, it will NOT wait for INPUT. It just throws an error
                playAgain = input.next().charAt(0);
        }
        input.close();
        return (playAgain != 'y')?false:true;
}

// [Trimmed]

public static void initialize(ArrayList<String> names, ArrayList<Integer> scores)
{
        Scanner input = new Scanner(System.in);
        for (int i = 1; i <= 5; i++)
        {
                System.out.println("Enter the name for score #" + i + ":");
                names.add(input.nextLine());
                System.out.println();
                System.out.println("Enter the score for score #" + i + ":");
                while(!input.hasNextInt())
                {
                        //input.nextLine();
                        System.out.println("Please input a valid integer value for the score for #" + i + ":");        
                        if(!input.hasNextInt())
                                 input.nextLine();
                }
                scores.add(input.nextInt());
                input.nextLine();
        }
        input.close();
}

我尝试了很多组合如何阅读一个角色。这曾经起作用,我可以使用以下内容读取一个字符:

Scanner input = new Scanner(System.in);
char temp = input.next().charAt(0);

但是,不知怎的,在我编写的这个程序中,它不起作用。

这是一个将读取5个用户名(字符串)&amp; 5分(整数)并将它们放在2个数组中。它将按降序对数组进行排序,然后将其打印出来。所以,我唯一的问题是询问他们是否想要再次播放并采取一些字符输入来查看他们是否想再次播放(是/否)?

如果可以,请帮忙。我尝试了很多组合:if (input.hasNext()),但无济于事。

1 个答案:

答案 0 :(得分:0)

您没有将playAgain设置为&#39; y&#39;以外的其他内容。在playGameAgain()。你有一个错误。