gpt4 book ai didi

java - 我只为我的最终变量分配一个值,但仍然收到错误

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

当我的实例字符串cardRank和cardSuit最终时,我遇到了错误,我认为我只在代码中为它们分配一次值。我已经在代码中评论了我正在谈论的内容。

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; // I want to make this final
private String cardSuit; // I want to make this final

public Card(){
this(RANKS[(int) (Math.random() * RANKS.length)] , SUITS[(int) (Math.random() * SUITS.length)]);
}

public Card(String cardRank, String cardSuit){
setRank(cardRank);
setSuit(cardSuit);
}

private boolean isValidRank(String cardRank){
cardRank = cardRank.toUpperCase();
return Arrays.asList(RANKS).contains(cardRank);
}

private boolean isValidSuit(String cardSuit){
cardSuit = cardSuit.toLowerCase();
return Arrays.asList(SUITS).contains(cardSuit);
}

private void setRank(String cardRank){
if(isValidRank(cardRank)) this.cardRank = cardRank;
else this.cardRank = "Invalid Suit";
}

private void setSuit(String cardSuit){
if(isValidSuit(cardSuit)) this.cardSuit = cardSuit;
else this.cardSuit = "Invalid Suit";
}

public String getRank(){
return cardRank;
}

public String getSuit(){
return cardSuit;
}

public void printCard(){
System.out.println(getSuit() + " " + getRank());
}

}

最佳答案

只能分配给构造函数主体内的final字段(或作为声明的一部分,或实例初始值设定项)。所以基本上,您应该放弃 setSuitsetRank 方法。

public Card(String cardRank, String cardSuit) {
this.cardRank = isValidCardRank(cardRank) ? "Invalid rank";
this.cardSuit = isValidCardSuit(cardSuit) ? "Invalid suit";
}

或者更好:

public Card(String cardRank, String cardSuit) {
this.cardRank = validateRank(cardRank);
this.cardSuit = validateSuit(cardSuit);
}

如果有效值无效,validate* 方法将抛出 IllegalArgumentException

或者更好的是,创建 SuitRank 枚举,这样只有值是有效的,您只需要检查是否为空...

关于java - 我只为我的最终变量分配一个值,但仍然收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668644/

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