问题描述:3v3游戏,每次开始游戏前先检查玩家列表,有过列表为空则向里面添加游戏玩家。游戏结束后,如果是新添加的游戏玩家,则写入到玩家列表当中,如果不是,结束操作。

创建游戏玩家对象:

public class GamePlayer {private String id;private Boolean gender;private int attact;public GamePlayer() {}public GamePlayer(String id, Boolean gender, int attact) {this.id = id;this.gender = gender;this.attact = attact;}public String getId() {return id;}public void setId(String id) {this.id = id;}public Boolean getGender() {return gender;}public void setGender(Boolean gender) {this.gender = gender;}public int getAttact() {return attact;}public void setAttact(int attact) {this.attact = attact;}
}

主程序及其相关方法步骤:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {public static void main(String[] args) throws IOException {// 检查好友列表文件及其目录,如果不存在则创建System.out.println("检查好友列表及其目录,如果不存在则创建");File file = new File("D:/Java/workspace/learnCourse/src/learn/pre/course10/listOfGameFriends.txt");if (!file.getParentFile().exists()) {file.getParentFile().mkdirs(); // 判断}if (!file.exists()) {file.createNewFile();}// 创建集合用来存放玩家对象System.out.println("创建集合用来存放玩家对象");ArrayList<GamePlayer> list = new ArrayList<>();// 读取文件内容到集合System.out.println("读取文件到集合");list = read(list);// 判断是否为新的文件,是新的,则为其添加文件System.out.println("判断好友列表是否为新,如果是新的,向集合中添加新的好友:");Boolean isNew = (list.size() == 0);if (isNew) {list = addGamePlayer(3, list);}// 打印输出我方队伍的id和性别System.out.println("打印输出我方队伍的召唤师ID和性别");printIdAndGender(list);// 将集合写入文件if (isNew) {writeIntoFile(list);}}// 读取文件、存放到集合public static ArrayList<GamePlayer> read(ArrayList<GamePlayer> list) throws IOException {FileReader fr = new FileReader("D:/Java/workspace/learnCourse/src/learn/pre/course10/listOfGameFriends.txt");BufferedReader br = new BufferedReader(fr);String line;String[] arr;while ((line = br.readLine()) != null) {System.out.println("运行了");arr = line.split(",");String idName = arr[0];Boolean gender = Boolean.valueOf(arr[1]).booleanValue(); // 字符串转为布尔值int attact = Integer.valueOf(arr[2]).intValue(); // 字符串转int值GamePlayer gp = new GamePlayer(idName, gender, attact);list.add(gp);}br.close();return list;}// 添加游戏玩家(手动键入)public static ArrayList<GamePlayer> addGamePlayer(int num, ArrayList<GamePlayer> list) {Scanner sc = new Scanner(System.in);System.out.println("运行了!");for (int i = 1; i <= num; i++) {System.out.print("请输入第" + i + "位玩家的ID:");String idName = sc.next();System.out.print("请输入第" + i + "位玩家的性别(true为男,false为女):");Boolean gender = sc.nextBoolean();System.out.print("请输入第" + i + "位玩家的熟练度:");int attact = sc.nextInt();GamePlayer gp = new GamePlayer(idName, gender, attact);list.add(gp);}sc.close();return list;}// 打印输出public static void printIdAndGender(ArrayList<GamePlayer> arr) {GamePlayer gp;for (int i = 0; i < 3; i++) {gp = arr.get(i);String idName = gp.getId();Boolean gender = gp.getGender();if (gender) {System.out.println("第" + (i + 1) + "位召唤师的ID为:" + idName + ",性别:男");} else {System.out.println("第" + (i + 1) + "位召唤师的ID为:" + idName + ",性别:女");}}}// 写入文件public static void writeIntoFile(ArrayList<GamePlayer> arr) throws IOException {FileWriter fw = new FileWriter("D:/Java/workspace/learnCourse/src/learn/pre/course10/listOfGameFriends.txt",true);BufferedWriter bw = new BufferedWriter(fw);for (int i = 0; i < arr.size(); i++) {GamePlayer gp = arr.get(i);String idName = gp.getId();Boolean gender = gp.getGender();int attact = gp.getAttact();bw.write(idName + "," + gender + "," + attact);bw.newLine();}bw.close();}
}

首次运行结果:

检查好友列表及其目录,如果不存在则创建
创建集合用来存放玩家对象
读取文件到集合
判断好友列表是否为新,如果是新的,向集合中添加新的好友:
运行了!
请输入第1位玩家的ID:火之高兴
请输入第1位玩家的性别(true为男,false为女):false
请输入第1位玩家的熟练度:233
请输入第2位玩家的ID:霜之哀伤
请输入第2位玩家的性别(true为男,false为女):true
请输入第2位玩家的熟练度:1122
请输入第3位玩家的ID:水之开心
请输入第3位玩家的性别(true为男,false为女):false
请输入第3位玩家的熟练度:12
打印输出我方队伍的召唤师ID和性别
第1位召唤师的ID为:火之高兴,性别:女
第2位召唤师的ID为:霜之哀伤,性别:男
第3位召唤师的ID为:水之开心,性别:女

第二次运行结果:

检查好友列表及其目录,如果不存在则创建
创建集合用来存放玩家对象
读取文件到集合
运行了
运行了
运行了
判断好友列表是否为新,如果是新的,向集合中添加新的好友:
打印输出我方队伍的召唤师ID和性别
第1位召唤师的ID为:火之高兴,性别:女
第2位召唤师的ID为:霜之哀伤,性别:男
第3位召唤师的ID为:水之开心,性别:女

【Java学习】10入门篇之综合实战(对象、IO流、方法等)相关推荐

  1. java学习,入门篇-HelloWorld

    HelloWorld 学习资源:西部开源–秦疆,B站up主'遇见狂神说'. 新建一个用于存放代码的文件 在新建的文件中新建一个Java 文件 新建一个文件 更改后缀名为Hello.java 编码格式 ...

  2. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  3. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  4. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  5. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  6. 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序

    前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...

  7. R语言学习笔记——入门篇:第三章-图形初阶

    R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...

  8. Vue学习笔记入门篇——数据及DOM

    本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...

  9. 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型

    1. 什么是数据类型? 我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型. 比如,数学中的数字 ...

最新文章

  1. GCD BZOJ2818 [省队互测] 数学
  2. 6426C Lab6 部署和配置RMS
  3. python-判断语句介绍
  4. Mysql 主从数据库同步详解
  5. 九年级计算机上册教学总结,九年级信息技术教学工作总结
  6. java jre 1.6 32位_jre1.6官方下载-java jre1.6(虚拟机运行环境)下载官方版(含32位/64位)-当易网...
  7. js 金额转为大写
  8. centos 7.5 mysql_CentOS7.5安装MySQL8以及相关设置
  9. 图解MySQL的各种 JOIN,看完不懂来找我!
  10. oracle归档日志满正常么,oracle归档日志满了的处理方法
  11. kali--linux--安装截图工具scrot
  12. 消防信号二总线有没电压_杭后旗医院消防消防设备电源原理
  13. msk基带信号matlab,MSK、GMSK调制及相干解调Matlab仿真
  14. 计算机取消补考,2005级《计算机文化基础》补考通知
  15. JavaScript中的柯里化(currying)
  16. 声音均衡器怎么调好听_均衡器调节(人声处理)
  17. uni-app 开发小程序,使用到u-charts.js时会出现弹框或下拉框部分与图标重叠的情况(还有在解决过程中出现 vasToTempFilePath: fail canvas is empty)
  18. 2018年我跑去做淘宝了(续篇)
  19. 如何有效选毕业论文题目?
  20. Visual Studio 2017正式版各版本比较:企业版最强大

热门文章

  1. 2019年8月TIOBE语言排行榜:编程语言世界的无聊季节
  2. python xy打不开_pythonxy和spyder无法在中启动类型错误配置分析器.py
  3. 我对前端工程化的理解
  4. bzImage、zImage
  5. Windows7文件夹背景终于可以更换啦
  6. springboot跳转html_畅游Spring Boot系列 — 自定义配置
  7. 一文读懂Toast显示流程
  8. Bootcamp 安装 Windows 8/8.1 分区 下载驱动 安装教程
  9. hive map格式转换为字符串_HIVE数据类型
  10. idea annotate 莫名消失