如果用户选择的话,我输入了一个for循环。
System.out.println("Single Player=1\t Two Player=2\t Report Single
Tables=3\t Report all tables=4\t Exit=5");
choice= sc.nextInt();
if(choice ==1){
for (int i = 0; i <= np.length; i++) {
if (np[i] == 0) {
np[i]++;
System.out.print("Enter name:");
String str = sc.nextLine();
player1[i] = str;
break;
}
}}
当我进入for循环时,会再次弹出输入名称提示以及菜单,该菜单应该在循环结束后出现。令我困惑的是为什么它在我甚至可以输入名字之前就已经破了。
答案 0 :(得分:2)
否则每个人都在猜测。
查看np.length
等于i == 0
时的内容,然后您很可能会得到答案。
首先浏览一下i == 0
,最有可能np.length == 0
,但我们绝对不知道,因为您没有发布所有相关代码。
当数组长度为0时,i == 0 && i <= np.length
会是什么?
for (i = 0; i <= 0; i++)
{
/* how many times do you think this will loop? */
}
答案 1 :(得分:0)
您应该在sc.nextLine();
之后立即添加choice= sc.nextInt();
。它会解决您的问题。
因为当您输入choice
的号码时,请按Enter
。号码由choice
读取到sc.nextInt()
,但您的Enter
仍在输入流中。
然后,String str = sc.nextLine();
读取您的Enter
并打破您的循环,而不是等待您输入名称。
System.out.println("Single Player=1\t Two Player=2\t Report Single
Tables=3\t Report all tables=4\t Exit=5");
choice= sc.nextInt();
sc.nextLine(); //this line will consume your Enter (end line) char
if(choice ==1){
for (int i = 0; i <= np.length; i++) {
if (np[i] == 0) {
np[i]++;
System.out.print("Enter name:");
String str = sc.nextLine();
player1[i] = str;
break;
}
}
}