如果语句正在运行,即使表达式为false

时间:2015-07-21 16:10:52

标签: android

我正在为Android应用程序编写一些java代码,由于某种原因,即使表达式为false,也会执行if语句。

在下面的代码中,如果verbLength > 1,它应该执行if语句,但是,即使verbLength为1,if语句仍在运行。我只希望它在2或更多时运行(我也试过verbLength >= 2

        // Verifies the value of verbLength by showing it in a toast, this displays "1"
    Toast.makeText(getApplicationContext(), verbLength, Toast.LENGTH_SHORT).show();

    if (verbLength > 1) {
        // Lets me verify that this if statement is in fact running
        Toast.makeText(getApplicationContext(), "Code executed", Toast.LENGTH_SHORT).show();

        // The code that is being executed anyway
        TextView cardContent2 = (TextView) findViewById(R.id.verbText2);
        cardContent2.setText(verbContentArray[1]);
        TextView cardTitle2 = (TextView) findViewById(R.id.verbName2);
        cardTitle2.setText(verbTitleArray[1]);
        TextView cardPrefix2 = (TextView) findViewById(R.id.verbTitle2);
        cardPrefix2.setText(verbPrefix);
    }
    else{
        CardView cardView2 = (CardView) findViewById(R.id.card_view2);
        cardView2.setVisibility(View.GONE);
    }

Toast语句之前的if让我确定verbLength = 1并且没有意外更改。 if语句中的toast显示if语句已经运行,并且我没有意外地在其他地方运行代码。

之后我还有另一个if语句,它在功能上是相同的,除了它应该仅在verbLength >=3时运行。此代码也正在执行。

编辑:

如果有帮助,verbLength在代码的前面被声明为int,并通过verbLength = (R.integer.testLength);

给出它的值

2 个答案:

答案 0 :(得分:2)

  

如果有帮助,verbLength在代码中更早地被声明为int   通过verbLength =(R.integer.testLength)给出它的值;

您没有为verbLength分配声明的值,但其ID可能大于1。尝试使用

初始化其值
verbLength = getResources().getInteger(R.integer.testLength);

答案 1 :(得分:-1)

这很奇怪,尝试定义一个最终的int并将其传递给而不是verbLength,看看你是否可以让它工作。您也可以用final int替换1。我不认为这会改变任何东西,但如果确实如此,你的问题在于你如何获得verbLength以及它是什么类型的变量