STRANGE IF-ELSE BEAVAVIOR:IF-ELSE循环执行

时间:2012-11-14 11:11:22

标签: java android if-statement

我在验证功能中使用了If-Else语句。 我有一个包含所有验证函数的验证类,然后我通过Validation类的对象访问这些方法。 发生的事情是控制进入了两个条件

if(some cond ..)
System.out.println("inside IF");
else
System.out.println("inside ELSE");

我也试过

if(some cond ..)
{
System.out.println("inside IF");
}
else
{
System.out.println("inside ELSE");
}

在两种情况下,控制进入两个条件并打印两条线。 我无法向我自己解释这一点,无论我给出什么条件,如果这不是语法错误,它应该只在循环中但不是两者都

任何人都可以解释可能的情况和执行条件是否已经执行?

我在我的项目中做了一些其他不相关的更改,经过一段时间它工作正常,但那时我无法解释自己的可能性

btw如果重要的话,我在android项目中使用这个类,因此正在使用android编译器

3 个答案:

答案 0 :(得分:5)

你的意思是if-else条件语句,而不是循环。

这听起来像是一个线程问题。你可能有一个线程在一条路线上,而另一个线程调用相同的方法,然后在另一条路径上。这就是你如何显示两个字符串。

要进行调试,您可以在每次Thread.currentThread()来电时打印System.out.println。我相信你会看到不同的Thread对象地址。

答案 1 :(得分:0)

对于谷歌最终来到这里;我在Android中遇到了相同的java情况。

在我的情况下(不完全相同的代码);

int state = 1;
if(state == 1)
{
    //invokes here
    state = 3;
}
else if(state==2){}
else if (state ==3)
{
    //invokes here too
}

问题是如果这是在“触摸”之类的事件上运行的话;它可能会运行多次。第二次调用上面的代码显然会运行state == 3部分的代码。为避免这种情况,您应该使用点击事件或在第一次触摸后短暂忽略触摸事件的计时器。

答案 2 :(得分:0)

这是流程的问题。 我在for循环中使用if-else时遇到了同样的问题。 实际上,它是第一次执行if块,但是第二次执行else块,因为第二次不满足if条件。现在,如果您在循环中使用if-else,请使用break语句