【问题标题】:java singleton boolean expression to return message instead of true or falsejava单例布尔表达式返回消息而不是true或false
【发布时间】:2015-08-29 07:52:29
【问题描述】:

我们如何获得带有哈希集的基本单例的布尔表达式以返回消息来代替原始的“真”或“假”?

public boolean bookLane(String lane) {
    return runLane.remove(lane);
}

我只想用消息替换真假返回语句。

为了帮助澄清这个问题,如下所示(我知道它不起作用)是我想要去的方向......

public boolean bookLane(String lane) {
    if (true)
    {
        message = "Lane is available. Adding runner...";
        //instead of true
    }
    else
    {
        message = "Lane unavailable. Please choose another";
        //instead of false
    }
    return runLane.remove(lane);
}

我刚刚尝试弄乱代码,发现它现在只返回 false。

public boolean bookLane(String lane) {
    String message1 = "Lane Available. Adding runner...";
    String message2 = "Lane is Unavailable.";
    if (runLane.remove(lane))
    {
        System.out.println(message1);
    }
    else
    {
        System.out.println(message2);
    }
    return runLane.remove(lane);//
}

有修复它的想法吗?不会撒谎,我在 Java 方面的经验主要是在更有经验的程序员的帮助下反复试验。我认为如果有人可以让我知道我所缺少的布尔方法如何工作而不仅仅是一个返回类型,我认为这种方法可以工作。我试图以返回值为目标,以使用返回的布尔值显示适当的消息。这条路线甚至可能吗?我是否错过了布尔方法如何工作的一些逻辑?请理解我的挫败感和我对你们帮助的需要。感谢您的指导...

【问题讨论】:

  • 返回布尔值的方法只能返回布尔值。不是字符串。如果要返回消息,则将返回类型更改为字符串。但实际上,方法的调用者应该使用布尔返回值来选择一条消息,我猜是显示它。
  • 正如@JBNizet 所写:将返回类型从boolean 更改为String。然后首先将runLane.remove(lane) 分配给一个局部变量,并将其用于您的逻辑来选择要返回的消息。
  • 这可能是 stackoverflow.com/questions/7470861/… 的副本吗?
  • @AlexErohin 这似乎更像是一场辩论而不是其他任何事情。我喜欢直接切入正题。没有其他类似的帖子。
  • 你是说在你更新的代码中你不能得到true的情况,即使你删除了runLane中的车道?要检查它,请执行 System.out.println("contains? " + runLane.contains(lane); 。如果它打印了contains? true,但仍然没有打印message1,那至少会很奇怪。

标签: java boolean singleton message


【解决方案1】:

在这些情况下,定义一个新的数据结构可能很有用,因为您想从同一个方法中检索两条信息。考虑以下几点:

class BookLaneResult {
    boolean success;
    String message;
    // add constructors / getters / other stuff you need
}

那么你的代码就变成了这样:

public BookLaneResult bookLane(String lane) {
    // some logic to determine if lane is available or not
    boolean laneAvaiable = ...;

    return new BookLaneResult(laneAvailable, laneAvailable ? "Lane available" : "Lane unavailable");
}

如果BookLaneResult 仅在这种情况下仅用于那些消息,那么您可以只使用boolean 参数构造函数并在内部根据参数设置消息。但是,为了使新数据结构更加灵活,您可以将其命名为 OperationResult,并在您执行某种操作时使用它,并期望检索一个表示操作成功或失败的布尔标志以及说明发生了什么的消息。

【讨论】:

    【解决方案2】:

    这是我用来判断一个字符是否为字母的布尔运算——如果是字母,则为真,否则为假。

    代码

    boolean isLetter = Character.isLetter(ch); 
        if (isLetter == true) {
            Boolean.toString(isLetter); 
            System.out.println(" This is a letter."); }
        else  {
            Boolean.toString(isLetter);
            System.out.println(" This is not a letter."); }
    

    为我工作 - 或许可以应用于其他布尔运算。

    输出

    Input data: 123456abcdef
    1  2 This is not a letter
    2  3 This is not a letter
    3  4 This is not a letter
    4  5 This is not a letter
    5  6 This is not a letter
    6  7 This is not a letter
    a  b This is a letter
    b  c This is a letter
    c  d This is a letter
    d  e This is a letter
    e  f This is a letter
    f  g This is a letter
    

    我意识到这已经晚了好几年,但对于那些从 Google 搜索中弹出此主题的人来说,包括这一点。

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多