Java中正式称为"search: { ... }" / "break search"语法是什么?

  • 本文关键字:search break 语法 是什么 Java java
  • 更新时间 :
  • 英文 :


此代码来自leetcode 681的解决方案:

class Solution {
public String nextClosestTime(String time) {
int cur = 60 * Integer.parseInt(time.substring(0, 2));
cur += Integer.parseInt(time.substring(3));
Set<Integer> allowed = new HashSet();
for (char c: time.toCharArray()) if (c != ':') {
allowed.add(c - '0');
}
while (true) {
cur = (cur + 1) % (24 * 60);
int[] digits = new int[]{cur / 60 / 10, cur / 60 % 10, cur % 60 / 10, cur % 60 % 10};
search : {
for (int d: digits) if (!allowed.contains(d)) break search;
return String.format("%02d:%02d", cur / 60, cur % 60);
}
}
}
}

通常我会用Python来做leetcode,但最近我想用Java来练习。我注意到这个部分:

search : {
for (int d: digits) if (!allowed.contains(d)) break search;
return String.format("%02d:%02d", cur / 60, cur % 60);
}

我以前从未见过这样的用途。我能理解它在做什么:感觉就像它自定义了一个"搜索"块,并且可以从中突破。我只想知道Java中这种用法的官方名称是什么。谢谢

这个构造在Java中被称为'Labeled break'

更多信息可在上找到

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

有一个标记的语句,其中该语句是以及一个标签为的break语句。你没有一个有标签的break声明——这是合法的,但很奇怪。

最新更新