gpt4 book ai didi

Java 卡类

转载 作者:行者123 更新时间:2023-12-01 11:27:56 25 4
gpt4 key购买 nike

我刚刚开始在 Oracle 学习 Java,并且开始了这个练习:

"Write a class whose instances represent a single playing card from a deck of cards. Playing cards have two distinguishing properties: rank and suit."

这是解决这个问题的好方法吗?

import java.util.Arrays;

public class Card{

protected static final String[] Suits = {"spades", "clubs", "hearts", "diamonds"};
protected static final String[] Ranks = {"1","2","3","4","5","6","7","8","9","10","J","Q","K"};

private String cardRank;
private String cardSuit;

public Card(){

int randomRank = (int) (Math.random() * Ranks.length);
int randomSuit = (int) (Math.random() * Suits.length);

cardRank = Ranks[randomRank];
cardSuit = Suits[randomSuit];

}

public Card(String cardRank, String cardSuit){
cardRank = cardRank.toLowerCase();
cardSuit = cardSuit.toLowerCase();

if(Arrays.asList(Ranks).contains(cardRank)) this.cardRank = cardRank;
else this.cardRank = "Invalid Rank";

if(Arrays.asList(Suits).contains(cardSuit)) this.cardSuit = cardSuit;
else this.cardSuit = "Invalid Suit";

}

public void getCardRank(){
System.out.print(cardRank);
}

public void getCardSuit(){
System.out.print(cardSuit);
}

public void sayCard(){
getCardSuit();
System.out.print(" ");
getCardRank();
System.out.println("");
}

public void setCardRank(String cardRank){
if(Arrays.asList(Ranks).contains(cardRank)) this.cardRank = cardRank;
}

public void setCardSuit(String cardSuit){
if(Arrays.asList(Suits).contains(cardSuit)) this.cardSuit = cardSuit;
}


}

最佳答案

除了它有效的基本事实之外,我认为还存在多种风格和设计问题。

  1. 花色和等级很可能应该是Enum,而不是为了性能和清晰度而定义的静态String数组。问题是,当其他类需要引用它们时,它们也只能引用为 String 数组;那么您就无法保护内容,即其他人可以轻松更改内容。

  2. 您的cardRank和cardSuite确实应该是最终,因为它们在构建后不会改变。

  3. 具有随机化功能的构造函数应使用参数调用其他构造函数,而不是自行实现赋值。

  4. 您的方法命名有问题。 getXXX() 通常意味着真正获取值,但您的方法签名是 void。您应该返回该值并让其他人决定如何处理它,即打印;如果您的方法只是想打印该值,请将它们重命名为 printXXX()

关于Java 卡类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30657290/

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