我有以下程序结构:
outerLoop:
for (i =0; i<x; i++) {
if(check condition) {
a = /* do something to calculate a */
goto jump;
} else {
//do something else
}
}
jump:
if (check condition) {
//do something
goto outerLoop;
}
如上所述,我想将控件从if
循环的for
部分转移到循环外看到的if
条件。我想再次从for
语句跳转到if
循环。我怎么做? Java中是否有goto
语句?
答案 0 :(得分:2)
当您有多个嵌套for循环时,有一种方法可以使用break和标签进行跳转。
请参阅:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
链接示例:
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");
}
}
}
答案 1 :(得分:2)
与其他答案相反:不要使用break
。我认为你在这里想要完成的事情可以这样做:
int calculateA() {
for (i = 0; i < x; i++) {
if (/* a was found */) {
return a;
} else {
// do something else
}
// What to do when `a` is not found is now explicit
throw new Exception("cannot calculate a");
}
// OuterLoop should be an actual loop
int a = calculateA();
while (/* second condition */) {
a = calculateA();
}
答案 2 :(得分:1)
Java不支持goto
(尽管这是一个保留字)。但是,与其他类c语言一样,java支持break
和continue
。你需要break
。它逃脱了循环。
与C相反,java的break
标签“几乎”goto
但有限。当您想要从多个嵌套循环中逃脱时,它非常有用。
答案 3 :(得分:0)
break
或continue
。
请参阅this帖子了解差异。
答案 4 :(得分:0)
您可以使用函数调用在伴随break
和continue
的语句之间跳转。
看看这是否有帮助:
for (i =0; i<x;i++){
if(check condition)
{
/*do something
calculate 'a'
*/
jump();
break; //use break if you want to exit the loop
}
else
//do something else
}//method ends
void jump()
{
if(check condition)
//do something
}