java if else 判断boolean类型不管true还是false执行只执行if

mAdapter.setOnTreeNodeClickListener(new TreeListViewAdapter.OnTreeNodeClickListener()
{
@Override
public void onClick(Node node, int position) {

                        if (node.isLeaf()) { //这里node.isleaf()为false 为什么还执行进去而且else都不执行
                            LogUtil.LogPrint("login", "第一次if0" + node.isleaf());
                            sonAttrabuite = node.getAttributespath();
                            LogUtil.LogPrint("login", "" + node.isleaf());
                            handler.sendEmptyMessage(HandlerOrder.Three_son);
                        } else {
                            LogUtil.LogPrint("login", "第一次else0" + node.isleaf());
                            if (MainActivity.ifPage == 1) {
                                MainActivity.attributespath = node.getAttributespath();
                                MainActivity.attributespath_Warni = (String) SPUtils.get(ctx, "attributesPath", "");
                                MainActivity.atrributepathName = node.getName();
                            } else if (MainActivity.ifPage == 2) {
                                MainActivity.attributespath_Car = node.getAttributespath();
                                MainActivity.attributespath_Warni = (String) SPUtils.get(ctx, "attributesPath", "");
                                MainActivity.atrributepathName_Car = node.getName();
                            } else if (MainActivity.ifPage == 3) {
                                MainActivity.attributespath_Warni = node.getAttributespath();
                                MainActivity.atrributepathName_Warni = node.getName();
                            }

                            TreeActivity.this.finish();
                        }


                        }  });
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

楼主,我觉得这种可能性不高,可能是你的编译文件不对,程序执行的和你最新的代码不一样,建议重新编译一下

java if else 判断boolean类型不管true还是false执行只执行if

这种问题是违反 if 结构的

应该是你判断条件错误
或根本就没有判断

if (node.isLeaf()) { //这里node.isleaf()为false 为什么还执行进去而且else都不执行
你判断一下是不是真的为node.isleaf() == false ,
这意思是node.isleaf() 个值是永真的,改变并没有对其产生影响

你应该重点发展这里

不然你可以试试,直接把 node.isleaf() 换成 true ,在换成 false 肯定执行结果不同

if (true)

if (false)

首先建议你在后台输出一下node.isLeaf() 的值,看是否为true或false;可能是代码的结构哪里出了问题,导致这里方法返回的结果出问题。

建议你把这个方法的代码也贴一下出来,便于分析。

楼主,你这if else外面还有两层域,确定是否进到if else这一层了,如果进到if else这一层,就看日志,确定是进if还是进else,如果node.isleaf()为false还进到if里面,说明编译有问题重新编译部署测试。跟踪日志就行。if else没有问题的

现在不管是true还是false都只执行else方法了,真的这个逻辑都没错啊,为什么会这样。

node.isLeaf()这个是获取的一个值而已,我每次都打印出来了,不管node.isleaf()=true或者node.isleaf()=false都只执行if的方法。真的头痛,各位请指教啊。

劝你进入main方法测试这node.isLeaf()是否有值 ,返回值是否布尔值
用debug模式跟一下,或者直接打印你想看的值

不存在这种神秘事件,还是好好debug看看

删除class文件,重新编译

建议重新编译..eclipse建议clean下....有可能是缓存

那这个判断完全没必要存在了,还判断干什么,反正必然会if