试图获得2个布尔值Java的返回值

时间:2014-03-31 18:48:05

标签: java

基本上,我有两个布尔值,称为“更高和相同”,我希望它们都能在我的isNextCardHigher方法中返回

class HigherSame{
    boolean higher = false;
    boolean same = false;
    boolean[] HandS = {higher, same};
}


boolean isNextCardHigher(TCard lastCard, TCard nextCard, HigherSame highersame, boolean HandS[] ){

    if (nextCard.rank == lastCard.rank){//Higher = game over
        boolean same, higher;

        if(nextCard.rank == lastCard.rank){
            same = true;
        }

        if (nextCard.rank > lastCard.rank){
            higher = true;
        }
        return HandS[];

4 个答案:

答案 0 :(得分:4)

您可以更改HigherSame类对象的返回类型,这样就可以获得两个布尔值。

答案 1 :(得分:1)

您可以将返回类型从boolean更改为boolean[],但我可能更愿意返回HigherSame的实例。

答案 2 :(得分:0)

boolean值有两种状态(truefalse)。你基本上试图返回3个州(更高,相同或两者)。我建议使用更合适的数据类型。例如,您可以使用枚举:

enum CardRelation { HIGHER, SAME, LOWER };

或者您可以返回HigherSame

您也可以采用比较器式方法并返回int:如果小于0,则返回负数,如果相等则返回0,如果更高则返回1 - 然后>= 0可用于测试结果是否为"相同或更高"。您甚至可以实施Comparable或使用正确的Comparator。虽然int本身没有任何意义,但这种比较风格经常在Java中使用,因此其含义可以保持清晰。

考虑一下您要确定的内容(比较两张卡片)并尝试提出一种自然反映该概念并保持适当语义的数据类型。

顺便说一下,boolean[]也会丢失所有语义值,通常是一个糟糕的选择,"结果[0]"需要一些解释,你最终会对整个地方的数组长度做出假设,null表示什么?

答案 3 :(得分:-2)

方法只能返回1个对象或值。如果要返回多个对象或值,可以返回数组或列表。在你的情况下,如果你有这样的方法

boolean isNextCardHigher() { ... }

您可以更改它以返回布尔值数组。

boolean[] isNextCardHigher() { ... }

然后在你的方法中你将创建一个数组,用你想要的值填充它,并返回整个数组。

boolean[] result = new boolean[2];
result[0] = same;
result[1] = higher;
return result;