如何比较对象的两个返回值?因为当我在我的代码中执行此操作时,返回值每次都不同。这是我的代码:
public static void Card_Initialization(){
Red_Dog c1 = new Red_Dog();
Red_Dog c2 = new Red_Dog();
Cards_Match(c1);
System.out.println(card_num+card_suit);
Cards_Match(c2);
System.out.println(card_num+card_suit);
System.out.println(Cards_Match(c1) == Cards_Match(c2));//to check really if it is equal
}
public static int Cards_Match(Red_Dog rd){
card = (int)(Math.random() * deck.length);
if(card >= 0 && card <=3)
{
card_num = cards[0];
}
else if(card >= 4 && card <=7)
{
card_num = cards[1];
}
else if(card >= 8 && card <=11)
{
card_num = cards[2];
}
else if(card >= 12 && card <=15)
{
card_num = cards[3];
}
else if(card >= 16 && card <=19)
{
card_num = cards[4];
}
else if(card >= 20 && card <=23)
{
card_num = cards[5];
}
else if(card >= 24 && card <=27)
{
card_num = cards[6];
}
else if(card >= 28 && card <=31)
{
card_num = cards[7];
}
else if(card >= 32 && card <=35)
{
card_num = cards[8];
}
else if(card >= 36 && card <=39)
{
card_num = cards[9];
}
else if(card >= 40 && card <=43)
{
card_num = cards[10];
}
else if(card >= 44 && card <=47)
{
card_num = cards[11];
}
else if(card >= 48 && card <=51)
{
card_num = cards[12];
}
if(card % 4 == 0)
{
card_suit = suits[0];
}
else if(card % 4 == 1)
{
card_suit = suits[1];
}
else if(card % 4 == 2)
{
card_suit = suits[2];
}
else if(card % 4 == 3)
{
card_suit = suits[3];
}
return card;
}
结果: 第一轮: AceSpades AceSpades 假
第二轮: AceSpades AceSpades 真
答案 0 :(得分:3)
在java(以及许多通过引用语言传递)中,==运算符会比较存储对象的内存位置。因为它们是两个不同的对象,所以它们存储在不同的存储位置。
你需要使用这样的.equals()方法:
c1.equals(c2)
您需要编写班级的equals方法,以检查卡片是否相等,在这种情况下,通过比较它们的编号和套装。
答案 1 :(得分:0)
我相信你应该改变这个:
System.out.println(c1.equals(c2));
到
<include layout="@layout/content_details" />
答案 2 :(得分:0)
你的命名让我们感到困惑。 Cards_Match不是一个对象!
根据您未在问题中包含的对象生成随机数字的方法。如果比较生成的随机int数,则每次都会获得不同的结果。
我认为你正在尝试实施:随机挑选一张卡片,随机挑选另一张卡片然后进行比较。但是它没有与你的其他程序一起工作。
将来请使用java命名约定。 http://www.oracle.com/technetwork/java/codeconventions-135099.html