一.Poker类
二.Constants类
三.PokerManager类
一.Poker类
在定义一个类时,一般会将它的属性保护起来,要想修改和查看类中的属性,则需要对外提供一些方法。Poker类中会用到setter、getter、toString几个方法。
1.setter用来修改Poker类中的属性,getter用来获取Poker类中的属性。在IDEA中(换了个开发工具,界面和AndroidStudio几乎相同),Alt+Insert键就会弹出Generate对话框(若未出现,可在设置中搜索Generate,查看快捷方式),选择Getter and Setter,然后选择可提供操作的属性。IDE自动生成如下几段代码:
image.png
image.png
image.png
也可用Generate添加Poker类的构造函数
image.png
为了方便显示整张牌,用Generate添加一个toString方法,并重写toString方法。
@Override
public String toString() {
return dot+pic;
}
Poker类的全部代码:
public class Poker {
private String dot;
private String pic;
public Poker(String dot, String pic) {
this.dot = dot;
this.pic = pic;
}
public String getDot() {
return dot;
}
public void setDot(String dot) {
this.dot = dot;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
@Override
public String toString() {
return dot+pic;
}
}
二.Constants类
把一些经常用到的常量专门用一个文件类来管理
public class Constants {
public static final String[] dots = new String[]{
"2","3","4","5",
"6","7","8","9",
"10","J","Q","K",
"A"
};
public static String[] pics = new String[]{
"♠","♥","♣","♦"
};
}
这里final是"不可更改"的意思,即用它来修饰一些不能被随意更改的常量。而用static修饰方便后面计算这两个数组的长度。
三.PokerManager类
再创建一个类PokerManager,里面管理关于生成一副牌,洗牌,显示牌的方法
生成一副牌generateOnePackOfCards()
洗牌shuffle()
显示牌show()
public class PokersManager {
private ArrayList<Poker> pokers;
public PokersManager(){
pokers = new ArrayList<>();
}
public void generateOnePackOfCards() {
for (int i = 0; i < Constants.POKER_DOTS.length; i++) {
String dot = Constants.POKER_DOTS[i];
for (int j = 0; j < Constants.POKER_PICS.length; j++) {
String pic = Constants.POKER_PICS[j];
Poker poker = new Poker(dot, pic);
pokers.add(poker);
}
}
}
public void show(){
int index = 0;
for(Poker poker:pokers){
System.out.print(poker + " ");
if((index+1) % 8 == 0){
System.out.println();
}
index++;
}
}
public void shuffle(){
Collections.shuffle(pokers);
}
}
主代码:
public static void main(String[] args) {
PokersManager manager = new PokersManager();
manager.generateOnePackOfCards();
manager.shuffle();
manager.show();
}
}
效果:
image.png