我正在写一个纸牌游戏。我遇到了一个问题,似乎无法解决问题。我首先尝试通过让用户指定数组大小来将玩家添加到数组中。然后要求用户输入要添加到阵列的播放器名称。我在第一次循环期间遇到循环问题"输入名称:"将在用户输入之前打印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());
}
}
答案 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'的播放器。