2015-08-29 24 views
1

我们如何获得具有散列集的基本单例的布尔表达式来返回代替原始“真”或“假”的消息?java单例布尔表达式返回消息而不是真或假

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

我只想用一条消息替换true或false返回语句。

为了澄清这个问题,类似下面(我知道它不工作)是我想要去的方向......

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的使用经验主要是试验和错误,有更多经验丰富的程序员提供一点帮助。我认为这种方法可以工作,如果有人可以让我知道我缺少什么,至于布尔方法如何工作,而不仅仅是一种返回类型。我试图将目标返回值显示与返回的布尔值相应的消息。这条路线甚至可能吗?我在布尔方法的工作方式或其他方面缺少一些逻辑吗?请理解我的沮丧和我需要帮助。感谢您给出的指导......

+2

返回布尔值的方法只能返回布尔值。不是字符串。如果要返回消息,请将返回类型更改为String。但实际上,方法的调用者应该使用布尔返回的值来选择一条消息,我想,它显示它。 –

+0

As @JBNizet写道:将返回类型从'boolean'改为'String'。然后首先将'runLane.remove(lane)'分配给一个局部变量,并将其用于逻辑以选择要返回的消息。 – MirMasej

+0

这可能是http://stackoverflow.com/questions/7470861/return-multiple-values-from-a-java-method-why-no-n-tuple-objects的副本吗? –

回答

0

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

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,并在执行某种操作时使用它,并期望检索表示操作成功或失败的布尔标志以及表明发生了什么的消息。