【问题标题】:Boolean and conditionals in order布尔和条件按顺序排列
【发布时间】:2015-04-25 21:01:21
【问题描述】:

所以下面我有一个方法,如果满足第二个条件,则返回 true。但是,如果满足第一个条件,我想返回 false。但是,我得到的问题是它总是返回 false 。

public static boolean matching(Request a, Request b) {
        if (a.info[2].equals("*") & b.info[2].equals("*")) {
            return false;
        }
        return ((a.info[1].equals(b.info[1]) && a.info[2].equals(b.info[2])) || (a.info[1]
                .equals(b.info[1]) && a.info[2].equals("*") || b.info[2]
                    .equals("*")));

    }

【问题讨论】:

  • 能否向我们展示一个您希望返回 true 的输入示例?
  • 如果它一直返回false,那么要么第一个条件为真,要么第二个条件为假。使用调试器找出原因。我们对这些数组的内容一无所知。
  • 是的,我放了 && 基本上它是一个服务器程序。如果两者都有 * 那么它应该返回 false 并等待。它这样做。但是,如果它不是明星,它仍然会返回 false 并等待
  • 请尝试在可理解的示例中描述您想要达到的条件(我相信只要正确说明它就会解决您的问题)。
  • @JayPatel,请在你的答案中修正&,以避免混淆,让新读者更快地帮助你。

标签: java boolean logical-operators


【解决方案1】:

没有试图理解你的整个条件句,我猜你这里有一个错字。-

if (a.info[2].equals("*") & b.info[2].equals("*")) {

你的意思是

if (a.info[2].equals("*") && b.info[2].equals("*")) {

改为。

您可以查看this old thread 了解更多信息。

编辑

如果问题仍然存在,则可能是第二个条件句存在问题。您可以做的最好的事情是设置断点以在运行时显示所有相关值;您应该很容易看到出了什么问题。

【讨论】:

  • 好的,这不是问题所在。我只是想看看问题的原因。
  • 如果这不是问题,那么您所说的@JayPatel 乱搞什么......?
  • @JayPatel,您希望返回 trueRequest 类代码的输入示例可能会有所帮助。请仔细检查执行线程的条件。
  • 单身"&"绝对不是问题。因此,如果您知道问题所在,您应该更新您的答案或将其删除。
  • 是的...我不知道...如果每次有人说“那不是问题,我只是在胡闹...哦,等等,看起来这实际上是问题”:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多