循环扫描仪输入

时间:2012-07-23 11:57:26

标签: java arrays loops

我正在写一个纸牌游戏。我遇到了一个问题,似乎无法解决问题。我首先尝试通过让用户指定数组大小来将玩家添加到数组中。然后要求用户输入要添加到阵列的播放器名称。我在第一次循环期间遇到循环问题"输入名称:"将在用户输入之前打印2次。有人可以帮我这个。谢谢。

public class Dealer {
    Scanner keyboard = new Scanner(System.in);
    private Deck deck = new Deck();
    Player[] players;

    public static void main(String []args){
        new Dealer();
    }

    public Dealer(){
        addPlayers();
        print();
    }

    private void addPlayers(){
        int num = numPlay();
        players = new Player[num];

        for(int i=0; i<num; i++){
            System.out.println("Enter name: ");
            String name = keyboard.nextLine();
            players[i] = new Player(name);
        }
    }

    private int numPlay(){
        System.out.print("Enter how many players: ");
        return keyboard.nextInt();
    }

    private void print(){
        for(Player x: players)
            System.out.println(x.toString());
    }
}

3 个答案:

答案 0 :(得分:0)

这应该有效

private int numPlay(){
        System.out.print("Enter how many players: ");
        return Integer.parseInt(keyboard.nextLine());
    }

答案 1 :(得分:0)

如果名称由一个字组成,则可以调用keyboard.next()函数而不是keyboard.nextLine()上的String name = keyboard.nextLine();函数

答案 2 :(得分:0)

如前所述,如果您致电numPlay(),扫描仪将读取按Enter键给出的数字和行结束字符。由于您使用了nextInt(),因此换行符仍保留在扫描程序中。

因此,缓冲区中仍有一些字符串,下一次从扫描程序读取的调用只返回这一新行;它不等你的输入。

此外,似乎它创建了一个名为'\ n'的播放器。