我是新来的,我的编码遇到了麻烦,我希望有人可以帮我打破这个循环,因为无论我输入什么,它总是在循环中。我的代码如下:
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;
}
}
}
}
答案 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)语句来检查空序列。