Java 循环扫描输入
我在写纸牌游戏。我遇到了一个问题,似乎无法解决。我试图通过首先让用户指定数组大小来将玩家添加到数组中。然后要求用户输入要添加到阵列中的玩家的名称。我有一个循环的问题,在第一个循环中“输入名称:”将打印2次,然后用户才能输入。有人能帮我吗。多谢各位Java 循环扫描输入,java,arrays,loops,Java,Arrays,Loops,我在写纸牌游戏。我遇到了一个问题,似乎无法解决。我试图通过首先让用户指定数组大小来将玩家添加到数组中。然后要求用户输入要添加到阵列中的玩家的名称。我有一个循环的问题,在第一个循环中“输入名称:”将打印2次,然后用户才能输入。有人能帮我吗。多谢各位 public class Dealer { Scanner keyboard = new Scanner(System.in); private Deck deck = new Deck(); Player[] players;
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());
}
}
公共类经销商{
扫描仪键盘=新扫描仪(System.in);
专用甲板=新甲板();
玩家[]玩家;
公共静态void main(字符串[]args){
新经销商();
}
公共交易商(){
addPlayers();
打印();
}
私人玩家(){
int num=numPlay();
玩家=新玩家[num];
对于(inti=0;i而言,这应该是可行的
private int numPlay(){
System.out.print("Enter how many players: ");
return Integer.parseInt(keyboard.nextLine());
}
如果名称由一个单词组成,则如果调用numPlay(),则可以调用keyboard.next()
函数,而不是keyboard.nextLine()
函数(位于String name=keyboard.nextLine();
)
,扫描仪读取数字和按Enter键给出的行尾字符。由于您使用了nextInt(),换行符仍保留在扫描仪中
因此,缓冲区中还有一些字符串,下一个从扫描仪读取的调用将返回这一新行;它不会等待您的输入
此外,它似乎创建了一个名为“\n”的播放机。在使用nextLine
读入播放机的数量后,您需要额外的nextLine
,因为该数字后面有一个尾随新行。请参见我的。这是因为假设没有前导/尾随空格。这比nextInt()更严格一些,然后是一个nextLine()。如果名称由多个单词组成怎么办?谢谢,这就很好地解释了这一点。