的switch
聲明符內只使用了交換機流量時break
,而不是爲循環,所以 如果你想打破for
循環,使用return
當正確的價值被發現,這將break
循環,從該方法返回,如下所示:
String Books[] = { "Harry Potter", "To Kill a Mocking Bird", "Hunger Games" };
for (int t = 0; t < Books.length; t++) {
switch (Books[t]) {
case "Harry Potter":
System.out.println("Getting from switch case " + t + " " + Books[t]);
return;//use return when CORRECT CONDITION is found
default:
System.out.println("Invalid search for book from switch case");
break;
}
}
簡單來說,您的break
將被應用到內碼塊,其在這裏是switch
,因此它不會break
for
的循環。所以,如果你想break
都switch
& for
在一起,使用return
聲明,以便它從方法返回。
很重要的一點是,不使用標籤在這針對結構化編程代碼(線之間跳轉)。
OPTION(2):
如果不從方法要return
,你需要重構你的代碼和移動書中發現邏輯像checkBookExists
一個單獨的方法,如下圖所示:
private boolean checkBookExists(String book, int t) {
boolean bookFound = false;
switch (book) {
case "Harry Potter":
bookFound = true;
System.out.println("Getting from switch case " + t + " " + book);
break;
default:
System.out.println("Invalid search for book from switch case");
break;
}
return bookFound;
}
現在稱之爲checkBookExists
方法for
循環中,如下圖所示,當書被發現,for
將break
。
String Books[] = { "Harry Potter", "To Kill a Mocking Bird", "Hunger Games" };
for (int t = 0; t < Books.length; t++) {
if(checkBookExists(Books[t], t)) {
break;
}
}
請格式化您的代碼。 – Omore
只要您返回找到的值,使用return的解決方案就會工作,如果循環所在的方法返回void,則在找到和未找到之間沒有區別,您將需要執行額外的檢查,例如檢查找到標誌或for!= null – efekctive
您只有'switch'不是'爲' –