gpt4 book ai didi

java - 为什么我的构造函数没有实例化变量?

转载 作者:行者123 更新时间:2023-11-29 06:31:45 34 4
gpt4 key购买 nike

为什么下面的clowns的值等于0

如果我打印 numOfDecks,它会按预期打印出 3

public class CardSet {

private static int numOfDecks;
char suits [] = {'a','s','h','c'};
char ranks [] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'};

public CardSet(int number){

if (number > 0) {
this.numOfDecks = number;

}
else this.numOfDecks = 3;
}

public static int getNumOfDecks(){
return numOfDecks;
}

static int clowns = numOfDecks;

public static void main (String [] args){
CardSet cards = new CardSet(3);
System.out.println(clowns); //prints out 0
System.out.println(numOfDecks); // prints out 3
}

最佳答案

这会设置参数变量的值:

else numberOfDecks = 3;

不是您真正想做的。相反,它应该是:

else this.numberOfDecks = 3;

设置字段的值。或者更简洁地说,你可以这样做:

public CardSet(int numberOfDecks){
this.numberOfDecks = (numberOfDecks > 0) ? numberOfDecks : 3;
}

作为旁注,请考虑为您的花色和等级使用枚举,因为这是 classic examples given for their use 中的一个。 .

关于java - 为什么我的构造函数没有实例化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194017/

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