1

我在验证函数中使用了 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");
}

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

任何人都可以解释如何同时执行 IF 和 ELSE 条件?

我在我的项目中做了一些其他不相关的更改,一段时间后它工作正常,但当时我无法解释我自己是如何做到的

顺便说一句,如果重要的话,我在一个 android 项目中使用这个类,因此使用了 android 编译器

4

3 回答 3

5

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

这听起来像一个线程问题。您可能有一个线程在一条路线上运行,而另一个线程调用相同的方法并在另一条路径上运行。这就是您可以显示两个字符串的方式。

为了调试它,您可以在每次调用Thread.currentThread()结束时打印。System.out.println我相信你会看到不同的Thread对象地址。

于 2012-11-14T11:15:01.520 回答
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 部分代码。为避免这种情况,您应该使用单击事件或在第一次触摸后短暂忽略触摸事件的计时器。

于 2013-08-01T02:22:13.627 回答
0

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

于 2018-08-01T16:30:28.420 回答