为了早期打破循环

时间:2015-02-10 01:55:30

标签: java loops

如果用户选择的话,我输入了一个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循环时,会再次弹出输入名称提示以及菜单,该菜单应该在循环结束后出现。令我困惑的是为什么它在我甚至可以输入名字之前就已经破了。

2 个答案:

答案 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;
          }
     }
}