综合案例
此前我们已经练习了根据集合当中的字符串对象读写文件,而本综合案例主要练习根据集合当中的自定义对象来读写文件。
场景介绍
很多网络游戏当中都有组队模式,例如魔兽世界、DotA、英雄联盟(LOL)、王者荣耀等,均为5人组队进行游戏。即使在现实生活中,打麻将、斗地主也都是多人进行的游戏。那么对于多人组队的游戏,典型的场景为:
1.有5个人都在玩游戏;
2.这5个人组成一个队伍;
3.这支队伍进行游戏;
4.队伍成员彼此欣赏,决定以后还要组队一起玩;
5.一段时间后大家再次组队游戏。
分析整体思路
实现
框架代码
//自定义一个类,代表英雄 public class Hero { //成员变量 private String name; //名字 private int attack; //英雄的攻击力 private String type; //英雄的类型 public Hero() { } public Hero(String name, int attack, String type) { this.name = name; this.attack = attack; this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAttack() { return attack; } public void setAttack(int attack) { this.attack = attack; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
//测试类 public class Test { public static void main(String[] args) { //1.首先创建一个集合,用来存储五个英雄 ArrayList<Hero> list = new ArrayList<>(); //2.读文件,把数据加到集合当中. System.out.println("加载文件的数据到集合当中."); //list.add(new Hero()); //假设已经从文件当中加载得到了数据,并且加入集合当中 //3.判断一下集合当中有没有内容,是不是新的? boolean isNew = list.size() == 0; //如果集合的长度为0,说明这是新的队伍 System.out.println("这是不是新队伍:" +isNew); //如果是新的队伍,没有人,就需要创建五个对像加入到集合当中 if(isNew) { System.out.println("创建5个对象加入集合中."); } //如果不是新的队伍,已经有人了,就不需要创建了. System.out.println("我们队伍的阵容是:"); //遍历集合,输出其中的每一个对象的具体信息 System.out.println("循环5次进行遍历"); //统计一下总和战斗力是多少. int totalAttack = 0; //稍后在计算 System.out.println("我们队伍的总战斗力是:" + totalAttack); //判断一下集合是不是新的 if(isNew) { System.out.println("将集合的数据写到文件中."); } //如果集合不是新的,而是从文件中加载得到的数据,就什么都不用做 System.out.println("退出游戏"); } }
英雄问世(创建对象)
在测试类mian方法外添加方法
/* * 定义一个方法,用来向集合当中添加五位英雄.三要素: 返回值类型: 参数集合是引用类型,形式参数的操作会影响实际参数,所以不需要返回值,void 方法名称: * addFiveHeros 参数列表: ArrayList<Hero> */ public static void addFiveHeros(ArrayList<Hero> list) { // 英雄信息来自于键盘输入(Scanner) Scanner sc = new Scanner(System.in); // 创建一个Scanner用来进行键盘输入 for (int i = 1; i <= 5; i++) { //循环5次 //键盘输入英雄的三个信息 System.out.println("请输入第" + i + "英雄的名字:"); String name = sc.next(); //获取字符串 System.out.println("请输入第" + i + "英雄的攻击力:"); int attack = sc.nextInt(); //获取int数字 System.out.println("请输入第" + i + "英雄的类型:"); String type = sc.next(); Hero hero = new Hero(name,attack,type); //创建一个英雄对象 list.add(hero); //把英雄对象添加到集合当中 } }
在main方法对应的地方调用方法进行添加
</