gpt4 book ai didi

java - java中如何将数组的元素与另一个数组进行比较

转载 作者:行者123 更新时间:2023-12-01 22:43:25 24 4
gpt4 key购买 nike

逻辑是setgame

boolean isset = false;

三个卡片阵列,每个卡片阵列有 4 个不同的属性

String[] arraycard1 = {"1","open","red","diamond"};
String[] arraycard2 ={"1","solid","green","diamond"};
String[] arraycard3 ={"1","open","purple","oval"};

一组是三张卡的任意组合,其中所有三张卡上的每个属性都相同,或者所有三张卡上的每个属性都不同

我需要检查这组 3 张卡是否已设置。

for (int i=0 ; i<arraycard1.length ; i++){

检查属性是否全部相同或全部不同

      if ((arraycard1[i].equalsIgnoreCase(arraycard2[i]) && arraycard1[i].equalsIgnoreCase(arraycard3[i]) && arraycard2[i].equalsIgnoreCase(arraycard3[i]))||(arraycard1[i]!=arraycard2[i] && arraycard1[i]!=arraycard3[i] && arraycard2[i]!=arraycard3[i])){
isset = true;
}
}

最佳答案

为什么不使用类并重写 equals 方法?

import java.awt.Color;

public class Card{
int number;
String state;
Color color;
String suit;

public Card(int number, String state, Color color, String suit) {
super();
this.number = number;
this.state = state;
this.color = color;
this.suit = suit;
}

public int getNumber() {
return number;
}

public void setNumber(int number) {
this.number = number;
}

public String getState() {
return state;
}

public void setState(String state) {
this.state = state;
}

public Color getColor() {
return color;
}

public void setColor(Color color) {
this.color = color;
}

public String getSuit() {
return suit;
}

public void setSuit(String suit) {
this.suit = suit;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((color == null) ? 0 : color.hashCode());
result = prime * result + number;
result = prime * result + ((state == null) ? 0 : state.hashCode());
result = prime * result + ((suit == null) ? 0 : suit.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Card other = (Card) obj;
if (color == null) {
if (other.color != null)
return false;
} else if (!color.equals(other.color))
return false;
if (number != other.number)
return false;
if (state == null) {
if (other.state != null)
return false;
} else if (!state.equals(other.state))
return false;
if (suit == null) {
if (other.suit != null)
return false;
} else if (!suit.equals(other.suit))
return false;
return true;
}
}

如果您使用 Eclipse IDE,所有这些都会自动生成,您只需声明 4 个字段。

从菜单:

  • 来源 -> 生成 getter 和 setter。
  • 来源 -> 使用字段生成构造函数。
  • 来源 -> 生成 hashCode() 和 equals()。

然后你可以创建一个 Card 对象:

Card card1 = new Card(1, "open", Color.RED, "diamond");
Card card2 = new Card(1, "solid", Color.GREEN, "diamond");

boolean sameCard = card1.equals(card2); //false

您还可以创建一个 CardUtils 类来检查一些基本组合:

public class CardUtils{

public static boolean isPair(Card a, Card b){
return a.getNumber() == b.getNumber() && //Same number, different suit
!a.getSuit().equals(b.getSuit());
}

public static boolean isFlush(Card.. cards){
String suit = carsds[0].getSuit();
for(Card c: cards){
if(!c.getSuit().equals(suit))
return false;
return true;
}
public static boolean isPoker(Card..cards){
if(cards.lenght!=5) return false;
for(int i = 0; i < 2; i++){
int count = 0;
for(Card c1: cards)
if(isPair(cards[i], c1)) count++;
if(count==3) return true; //There are other 3 cards with same number but different suit in hand -> Poker!
}
return false;
}
}

并使用它

Card card1 = new Card(1, "open", Color.RED, "diamond");
Card card2 = new Card(1, "solid", Color.GREEN, "spears");
Card card3 = new Card(2, "solid", Color.RED, "diamond");

CardUtils.isPair(card1, card2); //True
CardUtils.isPair(card1, card3); //False

CardUtils.isFlush(card1, card2, card3); //False
CardUtils.isFlush(card1, card3); //True

最后但并非最不重要的一点是,您可以使用枚举来处理花色:

public enum Suit{
DIAMONDS,
HEARTS,
SPADES,
CLUBS
}
Card card1 = new Card(1, "open", Color.RED, Suit.DIAMONDS);

关于java - java中如何将数组的元素与另一个数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com