简单if语句无法正常工作

时间:2016-03-13 14:39:42

标签: java android if-statement

    int sch = 1;

    if (sch == 1){
        Log.d("check", "1");
    }
    if (sch == 2){
        Log.d("check", "2");
    }
    else {
        Log.d("check", "error!");
    }

这是一个非常简单的陈述。

我在我的android java代码中使用了完全相同的语句,

它在logcat中显示为check: 1

当我得到我正在使用的真实代码时,

    int sch = 1;

    if (sch == 1){
        activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
        if (android.os.Build.VERSION.SDK_INT >= 21) {
            activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
            activity.getWindow().setStatusBarColor(getResources().getColor(R.color.red));}

        Log.d("check", "1");
    }

    if (sch == 2){            
        activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
        if (android.os.Build.VERSION.SDK_INT >= 21) {
            activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
            activity.getWindow().setStatusBarColor(getResources().getColor(R.color.green));}

        Log.d("check", "2");
    }
    else {
        activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
        if (android.os.Build.VERSION.SDK_INT >= 21) {
            activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
            activity.getWindow().setStatusBarColor(getResources().getColor(R.color.white));}

        Log.d("check", "error");
    }
}

当我运行此代码时,它应该在logcat上显示check: 1并在状态栏上显示为红色。

但它显示如下:

check: 1
check: error

状态栏上显示白色。

这是确切的代码,我没有发现任何错误。

可能是什么问题?

3 个答案:

答案 0 :(得分:6)

替换:

if (sch == 2)

使用:

else if (sch == 2)

就目前而言,对于sch 1,它将与您的第一个sch==1 if和第二个else条件相匹配if else if 1}}。有关apt-get install gdc如何运作的详细信息,请参阅this official Java tutorial page

答案 1 :(得分:2)

你需要一个像下面这样的if结构,否则,如果是sch == 1,它将通过两个测试,第一个和最后一个像你的问题一样。

if (sch == 1){
    Log.d("check", "1");
} else if (sch == 2) {
    Log.d("check", "2");
} else {
    Log.d("check", "error !");
}

开关

使用多个条件和原始整数时的最佳解决方案是switch语句,如下所示default等同于else

switch(sch){
    case 1 : Log.d("check", "1") : break;
    case 2 : Log.d("check", "2") : break;
    default : Log.d("check", "error !") : break;
}

答案 2 :(得分:1)

试试这个:

int sch = 1;

if (sch == 1){
    activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
    if (android.os.Build.VERSION.SDK_INT >= 21) {
        activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
        activity.getWindow().setStatusBarColor(getResources().getColor(R.color.red));}

    Log.d("check", "1");
}

else if (sch == 2){            
    activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
    if (android.os.Build.VERSION.SDK_INT >= 21) {
        activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
        activity.getWindow().setStatusBarColor(getResources().getColor(R.color.green));}

    Log.d("check", "2");
}
else {
    activity.getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.white));
    if (android.os.Build.VERSION.SDK_INT >= 21) {
        activity.getWindow().setNavigationBarColor(getResources().getColor(R.color.white));
        activity.getWindow().setStatusBarColor(getResources().getColor(R.color.white));}

    Log.d("check", "error");
}
}