【问题标题】:Break while loop through if statement通过 if 语句中断 while 循环
【发布时间】:2017-03-18 11:51:07
【问题描述】:
public String pinLoacation(String city, String add2, String add3, String district, String state, String country,
            String pin) {
        Session session = getSession();

        city = "kallahi";
        add2 = "asi5a";
        add3 = "parvathiffgpuragm road";
        district = "kozfhikode";
        state = "kerafla";
        country = "india";
        pin = "673003";

        List<String> ar = new ArrayList<String>();

        ar.add(pin);
        ar.add(country);
        ar.add(state);
        ar.add(district);
        ar.add(city);
        ar.add(add3);
        ar.add(add2);

        Criteria criteria = session.createCriteria(RegionProfile.class);

        Disjunction disjunction = Restrictions.disjunction();

        int i = 0;
        while (i < ar.size()) {

            check: if (disjunction.add(Restrictions.eq("regionProfileName", ar.get(i)).ignoreCase()).equals(ar.get(i)))

                break check;
            else i++;


        }

        criteria.add(disjunction);

        ProjectionList proj = Projections.projectionList();
        proj.add(Projections.groupProperty("regionProfileId").as("regionProfileId"));
        criteria.setProjection(proj);
        criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        List<RegionProfile> res = criteria.list();

        return BasicGson.toGson(res);

    }
}

我有上面的代码,我想用它来从列表中返回特定列表项的 id,但它在 while 循环完成后返回整个结果。但我想要第一个真实条件的结果if 语句

regionprofile 列值

"World"
"Asia"
"India"
"Kerala"
"Kozhikode"
"673003"

所以实际上我想返回第一个相等列表项的 id,但现在它返回 2 个 id,即 indiapin

的 id

【问题讨论】:

  • 我必须同意你目前得到的答案:你的代码看起来过于复杂;并且由于我不是您使用的框架的专家...而且由于我现在没有真正的键盘...如果您仍然需要帮助,我只能提供您周一回复我。现在,我唯一能说的是:你的 if 条件中的代码太复杂了。尝试将其分解为各个部分;打印这些子结果以查看您的代码实际在做什么。好吧,也许是时候学习如何使用调试器了。

标签: java postgresql hibernate spring-boot


【解决方案1】:

您的代码中有几个错误。 首先,为什么覆盖方法开头的所有值时,方法中有参数。没有任何意义。

那么你的while循环就很奇怪了。在此循环中,您将if 条件命名为"check",在if 中,您无需执行任何操作即可中断"check"。你不增加i,所以下一次while循环,你的i还是一样。你想打破while循环吗?那你只需要你break;

【讨论】:

  • 实际上我想检查列表项是否相等属性并返回第一个匹配值的 id 并且列表的顺序非常重要,即 pin 值匹配然后返回 pin 值 id 并中断投影的循环。@Markus
猜你喜欢
  • 2015-04-07
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2014-01-21
  • 2015-11-08
相关资源
最近更新 更多