我正在为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);
答案 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以及它是什么类型的变量