为什么值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
}
Run Code Online (Sandbox Code Playgroud)
这将设置参数变量的值:
else numberOfDecks = 3;
Run Code Online (Sandbox Code Playgroud)
这不是你真正想做的事情.相反它应该是:
else this.numberOfDecks = 3;
Run Code Online (Sandbox Code Playgroud)
这设置了字段的值.或者更简洁一点,你可以这样做:
public CardSet(int numberOfDecks){
this.numberOfDecks = (numberOfDecks > 0) ? numberOfDecks : 3;
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,请考虑使用枚举为您的西装和等级,因为这是他们使用的经典示例之一.