加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – if和else语句同时虽然不应该是可能的

发布时间:2020-05-24 04:07:44 所属栏目:Java 来源:互联网
导读:我在日食中遇到了一个非常奇怪的问题.看下面的代码:public void addItem(ArrayListObject objectLists) { SHorizontalLayout hLayout = Cf.hLayout(); hLayout.setSizeFull(); hLayo

我在日食中遇到了一个非常奇怪的问题.
看下面的代码:

public void addItem(ArrayList

在for循环中,检查对象的实例类型并相应地添加到布局中.

我遇到的问题是,当对象是Integer类型时,它进入if语句,执行语句中的两行,然后不是在循环中留下新的循环,而是跳转到else语句,执行row columnList.get(1).addComponent(hLayout)(跳过else语句中的第一行).

它正在执行else语句的一部分,即使它已经进入了if语句.我知道这是因为我在我正在开发的应用程序中看到它的产品,并且我在调试代码时以编程方式看到它.

如果我要将问题分解为最小的组件:

i = 0;    
if(true)   {
   i++;
} else   {
   i++;
}

System.out.println(i);

我的问题是打印输出:2

我在这里不知所措.我的IDE有问题吗?有没有人遇到过这个,并且知道可能出现什么问题?

编辑:
我试过转换语句,可以得出结论,模式会重复.

for(Object object : objectLists)    {

        if(object instanceof ChipSlotGrid)  {
            hLayout.addComponent((ChipSlotGrid)object,Alignment.MIDDLE_CENTER);
            columnList.get(1).addComponent(hLayout);                
        } else if(object instanceof String || object instanceof Integer)    {
                hLayout.addComponent(Cf.h1(object.toString()),Alignment.MIDDLE_CENTER);
                columnList.get(0).addComponent(hLayout);
        }
    }

编辑2:从Jon的请求中我添加了日志记录.

for(Object object : objectLists)    {

            if(object instanceof ChipSlotGrid)  {
                log.info("Inside if");
                hLayout.addComponent((ChipSlotGrid)object,Alignment.MIDDLE_CENTER);
                columnList.get(1).addComponent(hLayout);
            } else if(object instanceof String || object instanceof Integer)    {
                    log.info("Inside else");
                    hLayout.addComponent(Cf.h1(object.toString()),Alignment.MIDDLE_CENTER);
                    columnList.get(0).addComponent(hLayout);
            }
        }

当它从if语句跳转到else语句时,也会跳过else语句中的日志. (我希望这是你要求的测试) 最佳答案 如果您的代码如下所示:

if(object instanceof String || object instanceof Integer)   {
    hLayout.addComponent(Cf.h1(object.toString()),Alignment.MIDDLE_CENTER);
    columnList.get(0).addComponent(hLayout);                
} else if(object instanceof ChipSlotGrid)   
    hLayout.addComponent((ChipSlotGrid)object,Alignment.MIDDLE_CENTER);
    columnList.get(1).addComponent(hLayout);            

(注意else if上没有大括号)然后只有第一行被认为是条件,第二行将始终被评估.

这是我能想到的唯一能引起你解释的东西.您确定在IDE中查看的代码正是正在执行的代码吗?例如,如果您在一个以上的JAR中有一个具有相同包和名称的类,那么它可能正在使用该类的过时版本.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读