我看到了奇怪的情况:在我的Android应用程序代码中使用类似的东西时,我没有收到任何错误:
@Override
public void onBackPressed() {
if (getActionBar().getSelectedTab().getPosition()==1)**;**
{
if ( getFragmentManager().findFragmentByTag("Tag B") instanceof ContactsArchiveFragment)
{
final ContactsArchiveFragment fragment = (ContactsArchiveFragment) getFragmentManager().findFragmentByTag("Tag B");
if (fragment.allowBackPressed()) { // and then you define a method allowBackPressed with the logic to allow back pressed or not
Log.i("calls act back cont archive", "on back clicked");
super.onBackPressed();
}
}
}
}
当我尝试做这样的事情时:
@Override
public void onBackPressed() {
if (getActionBar().getSelectedTab().getPosition()==1);
{
if ( getFragmentManager().findFragmentByTag("Tag B") instanceof ContactsArchiveFragment)
{
final ContactsArchiveFragment fragment = (ContactsArchiveFragment) getFragmentManager().findFragmentByTag("Tag B");
if (fragment.allowBackPressed()) { // and then you define a method allowBackPressed with the logic to allow back pressed or not
Log.i("calls act back cont archive", "on back clicked");
super.onBackPressed();
}
}
}
else
{
}
}
我收到了qazxsw大便。当我看到半音时,我意识到问题是什么。但这让我很难过,有人能解释一下它是什么吗?
当你有这样的Syntax error on token "else", delete this token
时:
if
应该与if();
{
// Supposed to be with if
}
一起使用的块现在只是一个独立于if
的本地块。 if
声明以分号结束。编译器不会将其标记为错误,因为它完全是有效的代码。
现在你的第二个案例:
if
请注意,if ();
{
} else {
}
语句仅以分号结束,然后您有一个块。但是if
不会在任何else
之后出现,因为它需要来。所以,它真的是没有if
的else
。
这类似于在此代码中出现错误的情况:
if
就是这样,上面的情况在第一眼就很明显了。它就像:
if () {
}
System.out.println("Hello");
else { // Error. Which `if` block do you suppose else to be bound with?
}
可视化为:
if ();
这相当于一个空的if()
; // Empty statement
块 - if
但这让我很难过,有人能解释一下它是什么吗?
当然 - if() { }
只是一个空洞的陈述,没有;
的块也没关系。例如,这是有效的:
if
...而if (i == 0)
System.out.println("i was 0");
System.out.println("In top-level block");
{
System.out.println("In a block");
}
之后的分号恰好相当于第一个空体的if
声明。
就个人而言,我总是使用大括号来表示if
语句(以及if
语句等)。某些编译器(例如Eclipse中内置的编译器)允许您在使用这样的空语句时发出警告或错误。
while
形式无效,因为你只能将else
子句作为else
/ if
语句的一部分,而else
语句已经在分号结尾处“完成”。
一个额外的if
造成这里的所有混乱。
那个分号在那里终止了;
,并假设它是一个新的块,从那里开始。
如果你仔细观察
statement
这是一个声明,而不是If条件。
条件应该是
if (getActionBar().getSelectedTab().getPosition()==1); <----
删除额外的 if (getActionBar().getSelectedTab().getPosition()==1){
}
如果你看到与块有关的;
,
块是平衡括号之间的一组零个或多个语句,可以在允许单个语句的任何位置使用。以下示例BlockDemo说明了块的使用:
docs