在我的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的新手,并帮助我避免这个错误
答案 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
,因为从可读性的角度来看,它不清楚。可以使用goto
和break
代替continue
。 goto
的替代方法是here