2015-07-21 29 views
2

我正在为android应用程序编写一些java代码,出于某种原因,即使表达式为false,if语句也正在执行。如果语句运行即使表达式为假

在下面的代码中,if语句if verbLength > 1即使verbLength为1,if语句仍在运行,它应该执行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); 
    } 

Toastif声明让我知道肯定verbLength = 1,并没有被意外更改。 if语句中的toast显示if语句已经运行,并且我没有意外地在其他地方运行代码。

我也有另一个if语句,除了它应该只在verbLength >=3之后才能运行。此代码也正在执行中。

编辑:

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

+0

如果'verbLength'为int初始化其值的第一个'Toast'应该崩溃您的应用程序 – Blackbelt

+0

@ Blackbelt..It不会 – Renjith

+0

如果verbLength是一个值为1的整数,那么有没有办法应该执行if里面的代码。 尝试在控制语句之前立即设置verbLength = 0的值,以显示控制语句的工作原理。 –

回答

2

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

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

verbLength = getResources().getInteger(R.integer.testLength); 
+0

Toast接受资源ID以及哪个是int.So它不会显示任何错误。 – Renjith

+0

是的,但是找到值为'1'的渣油很难找到,我知道'verbLength'是资源的id,@Renjith, – Blackbelt

+0

之前评论它解决了这个问题。我在代码中做了一些断点,并意识到verbLength实际上被设置为一个非常长的数字,我认为它是ID。使用这个代码反而给了我实际的价值,谢谢! – mxbi

-1

这是奇数,试图定义一个最终诠释和传递,在而不是verbLength,看看你是否可以得到它的工作。你也可以用最终的int替换1。我不认为这就是去改变什么,但如果这样做,你的问题就出在你获得verbLength以及如何变量的类型是

+0

这是比评论更多的评论(但我看你没有评论特权)。 – shoover

相关问题