如何在java中使用标签?

cgh8pdjw  于 2023-05-12  发布在  Java
关注(0)|答案(4)|浏览(101)

我在java代码中的标签中使用break语句时出错。显示undefined label。这样写代码是错误的。请帮助我正确使用它。先谢谢你了。

while (true) {
     label149: if (!localIterator2.hasNext());
     while (true) {
         i++;
         break;
         HashMap localHashMap2 = (HashMap)localIterator2.next();
         if (!((String)localHashMap1.get("name")).equalsIgnoreCase((String)localHashMap2.get("emotion")))
             break label149;
         if (!((String)localHashMap2.get("IS_paid")).equalsIgnoreCase("1"))
             break label246;
         ((HashMap)Saved.this.keynamedata.get(i)).put("is_paid", "1");
     }
     label246: ((HashMap)Saved.this.keynamedata.get(i)).put("is_paid", "0");
}
3yhwsihp

3yhwsihp1#

带有标签的breakgoto语句不同。Java没有goto语句。
标签标记其后的语句。您可以使用它来中断该语句,并且只能中断该语句。对流的控制总是转移到带标签语句的末尾。
你这有什么?

label149: if (!localIterator2.hasNext());

因为if后面有分号,所以这实际上是整个带标签的语句。所以你的break label149根本不在它的范围内。如果没有分号,则if块将包含while,然后break label149将工作。但控制权将转移到while块结束后的行。

label246: ((HashMap)Saved.this.keynamedata.get(i)).put("is_paid", "0");

这是由label246标记的语句。同样,break label246不在它里面,所以它不在它的作用域里,你不能跳出一个你不在里面的语句。

vxf3dgd4

vxf3dgd42#

使用Break和continue,你可以在应用程序中有复杂循环的地方使用label。但是避免使用标签总是明智的,因为它很难阅读代码,并且完全类似于一个糟糕的设计(还记得后藤(在java中仍然是一个关键字)在其他语言中吗?))。标签的示例如下所示:

abc: for (;;) {
    for (;; i++) {
        if (i == 255) {
            break abc;
        }
    }
}
System.out.println("Noww i am back");

这说明我需要打破我标记为abc的循环。所以它会从外部for循环中出来。如果我在这里省略了abc,那么它就会从最里面的循环中出来。第二个循环,我说它从中断。你不能期望label出现在代码的任何地方。

vecaoik1

vecaoik13#

标签break语句终止当前循环,并继续执行循环后的第一条语句,该循环由关键字break后的标识符标记。
例如:

for (int i=0; i<3; i++)
            {
             resume:
                for (……………)
                          {
                                 ……..
                              if (……..) break resume;
                 }
    }
px9o7tmv

px9o7tmv4#

java中的lable与c语言中的后藤不一样
在程序流程中,它们必须首先包含标签246:,然后允许使用break或continue语句。

相关问题