令牌goto throw预期的语法错误

时间:2013-01-29 09:41:58

标签: android

  

可能重复:
  Is there a goto statement in java?

在我的android应用程序中,我使用goto语句来控制流程。但我收到错误“令牌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的新手,并帮助我避免这个错误

3 个答案:

答案 0 :(得分:3)

Java中没有工作goto

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

一般提示:有Labeled Statements

  

语句可能带有标签前缀。

LabeledStatement:
     Identifier : Statement

LabeledStatementNoShortIf:
     Identifier : StatementNoShortIf
     

标识符被声明为直接包含的Statement的标签。

     

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

     

标签声明的标签范围是立即的   包含声明。 - JLS(§14.7)

但你真正想要的是重写你的构造而不使用它,例如使用while

while (f == 0) {
     // ...
}

答案 1 :(得分: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
}

答案 2 :(得分:-1)

建议不要在代码中使用goto,因为从可读性的角度来看,它不清楚。可以使用gotobreak代替continuegoto的替代方法是here