为什么我不能在循环(java)时退出这个?

时间:2017-05-06 12:41:11

标签: java for-loop while-loop

我是新来的,我的编码遇到了麻烦,我希望有人可以帮我打破这个循环,因为无论我输入什么,它总是在循环中。我的代码如下:

    boolean flag = true;
    while(flag)
    {
        System.out.println("Please enter the movie's title:");
        title = s.nextLine().trim();
        if(title.trim().equals(""))
        {
            System.out.println("Please do not enter an empty title!");
        }
        else 
        {
            for(Movie m: movies)
            {
                if(title.equals(m.getTitle().trim()))
                {
                    System.out.println("Title already exists!");
                }
                else
                {
                    m.setTitle(title);
                    flag = false;
                    break;
                }
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

您可以使用Java标记的中断的一个鲜为人知的功能。

officials docs的示例:

class BreakWithLabelDemo {
    public static void main(String[] args) {

        int[][] arrayOfInts = { 
            { 32, 87, 3, 589 },
            { 12, 1076, 2000, 8 },
            { 622, 127, 77, 955 }
        };
        int searchfor = 12;

        int i;
        int j = 0;
        boolean foundIt = false;

    search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }

        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

所以你基本上必须在实际循环之前放置一个标签,例如outer:,然后你可以使用break outer;来打破外循环而不是内循环。请注意,这也适用于continue

答案 1 :(得分:0)

if(title.trim().equals(""))
    {
        System.out.println("Please do not enter an empty title!");
         flag=flase;
    }

这里也是

 if(title.equals(m.getTitle().trim()))
            {System.out.println("Title already exists!"); 
flag=false;
break;

 }

答案 2 :(得分:0)

最初当你输入你的第一个标题时,“电影”序列中没有“for”循环可以通过的对象,因此我相信你的代码最初从不进入“for”循环并继续。

我建议在for循环之前使用if(movies == null)语句来检查空序列。