基本上,我有两个布尔值,称为“更高和相同”,我希望它们都能在我的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[];
答案 0 :(得分:4)
您可以更改HigherSame类对象的返回类型,这样就可以获得两个布尔值。
答案 1 :(得分:1)
您可以将返回类型从boolean
更改为boolean[]
,但我可能更愿意返回HigherSame
的实例。
答案 2 :(得分:0)
boolean
值有两种状态(true
和false
)。你基本上试图返回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;