再战扑克牌
扑克牌项目已经学过几天了,但是当时学的不扎实,所以今日又来重写一遍
一.简介
一共有这四类
二.具体代码
constants类
package 对象;
//用来存放扑克牌的固定的东西
public class constants {
//扑克牌的点数
protected static String[] POKERS_DOTS = {
"2","3","4","5","6","7","8","9","10","J","Q","K","A"
};
//存放扑克牌的花色
protected static String[] POKERS_PICS = {
"♥","♠","♣","♦"
};
}
Poker类
package 对象;
//一张牌该有的操作
public class Poker {
private String dots;
private String pics;
//生成一张牌
public Poker(String dots,String pics) {
this.dots = dots;
this.pics = pics;
}
//组装一张牌
public String producePoker() {
return dots+pics;
}
//重写toString
public String toString() {
return dots+pics;
}
}
PokerManager类
package 对象;
import java.util.*;
//管理一副牌该有的操作
public class PokerManager {
//1.保存一副牌
ArrayList<Poker> pokers;//写错了的地方①
//2.生成一副牌
PokerManager(){
pokers = new ArrayList<>();//写错了的地方②
}
//3.保存一副牌
//for(int i = 0;i < constants.),这一句要加在方法里面,类里面不能直接加for或者print这种执行语句
public void SavePokers() {
for(int i = 0;i < constants.POKERS_DOTS.length;i++) {
//保存抽出来的一个点数
String poker_dot = constants.POKERS_DOTS[i];
//为每个点数配四个花色
for(int j = 0;i < constants.POKERS_PICS.length;j++) {
//保存取出来的花色
String poker_pic = constants.POKERS_PICS[j];
//生成一张牌
Poker poker = new Poker(poker_dot,poker_pic);
//将这张牌保存到数组中
//int index = i*4 + j;//这个表示到第几张牌了,其实在代码中没有什么作用
pokers.add(poker);//写错了的地方③
}
}
}
//4.打乱一副牌
public void shuffle() {
Collections.shuffle(pokers);//写错了的地方④
}
//5.显示一副牌
public void show() {
for(Poker poker:pokers) {//写错了的地方⑤,注意这里是Poker而不是String
System.out.println(poker);//注意这里,可以是打印poker.producePoker()
//当然也可以重写toString方法,直接打印poker
}
}
}
测试程序类
package 对象;
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建管理者
PokerManager pokermanager = new PokerManager();
//2.生成一副牌
pokermanager.SavePokers();
//3.打乱一副牌
pokermanager.shuffle();
//4.显示一副牌
pokermanager.show();
}
}
三.主要收获
①一个类里面不能直接写for循环呐或者print之类的执行语句,要把他们放在方法里面。这次写程序我就发现我极容易把for或者System.out.println直接写在类里面,这样是不行的。
②集合虽然学过了,但是不会用,所以在这里暴露了知识掌握不牢固的问题
③缺乏重写toString方法的意识
总结
再次写完扑克牌程序之后,虽然也遇到了数组越界的错误,还有一些关于集合的句子不会写,但是总体来说还是比较顺利的。收获不小。