1

可能重复:
java中是否有goto语句?

在我的 android 应用程序中,我使用 goto 语句来控制流程。但我收到错误为“token goto 上的语法错误,抛出预期”。这是我的代码

label:
if(alc)
{
  r_code=st.nextToken();
  AlertDialog.Builder alert=new AlertDialog.Builder(Fetch.this);
  alert.setTitle(count+" records found for "+rytname.getText().toString());
  alert.setMessage("Are you sure want to search for "+r_code+"?");
  alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
      ff=1;
      alc=false;
    }
  });

  alert.setNegativeButton("NO", new DialogInterface.OnClickListener() {

   @Override
   public void onClick(DialogInterface dialog, int which) {
      // TODO Auto-generated method stub
      ff=0;
   }
  });
  alert.show();
  if (ff==0)
  {
    goto label;
}

我是这个 android 的新手,帮助我避免这个错误

4

3 回答 3

3

没有goto在 Java中工作

即使 Java 关键字列表指定了 goto 关键字,它也被标记为未使用。因此,它无法工作。您必须在不使用goto关键字的情况下重写代码。

一般提示:有标签语句

语句可能有标签前缀。

LabeledStatement:
     Identifier : Statement

LabeledStatementNoShortIf:
     Identifier : StatementNoShortIf

标识符被声明为立即包含的语句的标签。

与 C 和 C++ 不同,Java 编程语言没有 goto 语句;标识符语句标签与出现在标记语句中的任何位置的break (§14.15)continue (§14.16)语句一起使用。

带标签语句的标签范围是立即包含的语句。– JLS (§14.7)

但是您真正想要的是在不使用它的情况下重写您的构造,例如使用while

while (f == 0) {
     // ...
}
于 2013-01-29T09:43:55.210 回答
0

代替:

label:
...// the rest of your code
if (ff == 0) 
{
    goto label;
}

用这个:

do {
...// the rest of your code
while (ff == 0);

如果您可以将其转换为:

while (ff == 0) {
...// the rest of your code
}
于 2013-01-29T09:52:50.047 回答
-2

不建议goto在代码中使用,因为从可读性的角度来看会不清楚。goto可以使用breakand代替continue。替代品goto这里

于 2013-01-29T09:45:05.550 回答