CodeGym
促销活动
CodeGym University
学习
课程
任务
调查和小测验
游戏
帮助
提醒时间表
社区
用户
论坛
聊天
文章
成功故事
活动
评论
订阅服务
浅色主题
问题
  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 全部问题
Xu Yang
第 20 级
Falls Church
  • 11.08.2020
  • 496次阅读
  • 1个评论

help!

有关 任务的问题 CRUD 2
Java 核心,  第 7 级,  课程 10
正在讨论


批处理 CrUD: 多个创建、更新、删除。

程序使用以下参数集之一运行:
-c 姓名1 性别1 生日1 姓名2 性别2 生日2 ...
-u id1 姓名1 性别1 生日1 id2 姓名2 性别2 生日2 ...
-d id1 id2 id3 id4 ...
-i id1 id2 id3 id4 ...

参数值:
姓名 (String)
性别(“m”或“f”)
生日(生日采用以下格式:04 15 1990)
-c(将具有指定参数的所有人员添加到 allPeople 的末尾;以相应的顺序显示其 id)
-u(更新具有指定 id 的人员的相应数据)
-d(对具有指定 id 的人员执行逻辑删除;将其所有数据替换为 null)
-i(显示具有指定 id 的所有人员的有关信息:姓名 性别 生日)

id 与列表中的索引相对应。
生日格式采用 Apr 15 1990。
所有人员都应存储在 allPeople 中。
显示数据的顺序与输入数据的顺序一致。
确保程序是线程安全的(多个线程一起正常工作,不会中断数据。)
使用 Locale.ENGLISH 作为 SimpleDateFormat 的第二个参数。

具有两个 id 的 -i 参数的示例输出:
Washington m Apr 15 1990
Ross f Apr 25 1997

要求:
  • Solution 类必须包含名为 allPeople 的 public volatile List<Person> 字段。
  • Solution 类必须包含将两个人员添加到 allPeople 的 static 块。
  • 使用 -c 参数,程序必须将具有指定参数的所有人员添加到 allPeople 列表末尾,并显示每个人员的 id。
  • 使用 -u 参数,程序必须在 allPeople 列表中更新具有指定 id 的人员的数据。
  • 使用 -d 参数,程序必须在 allPeople 列表中对具有指定 id 的人员执行逻辑删除。
  • 使用 -i 参数时,程序应按照任务中指定的格式显示所有具有指定 id 的人员的有关数据。
  • Solution 类的 main 方法必须包含基于 args[0] 的 switch 语句。
  • switch 语句中的每个 case 标签都必须具有针对 allPeople 的同步块。
package zh.codegym.task.task17.task1711; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import java.text.SimpleDateFormat; /* CRUD 2 */ public class Solution { public static volatile List<Person> allPeople = new ArrayList<>(); static { allPeople.add(Person.createMale("唐纳德·坎普", new Date())); // id=0 allPeople.add(Person.createMale("拉里·盖茨", new Date())); // id=1 } public static void main(String[] args) { try { switch (args[0]) { case "-c": synchronized(Solution.class) { for (int i=0; i<args.length/3-1; i++) { Date date = new SimpleDateFormat("MM dd yyyy").parse(args[3+i*3]); if (args[2+i*3].equals("m")) { allPeople.add(Person.createMale(args[1+i*3], date)); // id=0 }else { allPeople.add(Person.createFemale(args[1+i*3], date)); // id=0 } System.out.println(allPeople.size()-1); } } case "-u": synchronized(Solution.class) { for (int j=0; j<args.length/4-1; j++) { int idu = Integer.parseInt(args[1*j]); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM dd yyyy"); Date date = simpleDateFormat.parse(args[4+4*j]); if (args[3+4*j].equals("m")) { allPeople.set(idu, Person.createMale(args[2+4*j], date)); }else { allPeople.set(idu, Person.createFemale(args[2+4*j], date)); } } } case "-d": synchronized(Solution.class) { for (int k=1; k<args.length-1; k++) { int idd = Integer.parseInt(args[k]); allPeople.get(idd).setSex(null); allPeople.get(idd).setBirthDate(null); allPeople.get(idd).setName(null); } } case "-i": synchronized(Solution.class) { for (int l=1; l<args.length-1; l++) { int idi = Integer.parseInt(args[1]); String s = null; if (allPeople.get(idi).getSex().equals(Sex.FEMALE)) { s = "f"; }else { s = "m"; // id=0 } String date2 = new SimpleDateFormat("MMM dd yyyy", Locale.ENGLISH).format(allPeople.get(idi).getBirthDate()); System.out.println(allPeople.get(idi).getName() +" "+ s +" " + date2); } } } }catch (Exception e) { } } }
0
评论 (1)
  • 受欢迎
  • 新
  • 旧
你必须先登录才能发表评论
Makima
级别 19 ,Beijing,China
31 十月 2020, 08:44
1、循环边界条件多减了1 2、应该同步allPeople
0
了解
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • 游戏项目
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 活动
  • Affiliate Program
公司
  • 关于我们
  • 联系方式
  • 评论
  • 新闻发布室
  • CodeGym 教育
  • 常见问题
  • 支持
CodeGym CodeGym 是一个从零开始学习 Java 语言编程的在线课程。本课程是初学者掌握 Java 语言的绝佳方式。它包含 1200 多个可即时验证的任务,以及基本范围内的 Java 基础理论。为了帮助你在教育上取得成功,我们实现了一组激励功能:小测验、编码项目以及有关高效学习和 Java 语言开发人员职业方面的内容。
关注我们
界面语言
程序员不是天生的 © 2023 CodeGym
MastercardVisa
程序员不是天生的 © 2023 CodeGym
This website uses cookies to provide you with personalized service. By using this website, you agree to our use of cookies. If you require more details, please read our Terms and Policy.