题目

用集合完成点名器(要求:点名时不能重复)

思路

创建array和array1两个集合,为什么要定义两个集合呢,如果只有一个集合要完成点名不重复,会使集合中的元素发生改变,不利于我们再次去查看信息或再次点名。array集合是对信息进行存储;而当array1集合为空时,我们就把array中的元素赋值给array1,用array1集合来点名,点过名的将其删除避免重复,直至集合再次为空再为其赋值以此往复。

具体请看以下代码

一.创建Rollcall类,定义姓名属性

public class RollCall {private String name;public RollCall() {}public RollCall( String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

二.创建对象,放在ArrayList集合中并完成点名功能

import java.util.ArrayList;import java.util.Collections;import java.util.Random;import java.util.Scanner;public class RollCallDeviceTest {public static void main(String[] args) {//创建集合对象,用于存储学生数据ArrayList<RollCall> array = new ArrayList<RollCall>();ArrayList<RollCall> array1 = new ArrayList<RollCall>();boolean loopFlag = true;//用循环完成再次回到主界面while (loopFlag) {//用输出语句完成主界面的编写System.out.println("-----------黄埔学生档案-----------");System.out.println("    1.存储同学名字");System.out.println("    2.查看全班同学姓名");System.out.println("    3.点名");System.out.println("    4.退出");System.out.println("->  请输入您选择的编号:");//用Scanner实现键盘录入数据Scanner sc = new Scanner(System.in);String line = sc.nextLine();//用switch语句完成操作的选择switch (line) {case "1":store(array);break;case "2":examine(array);break;case "3":call(array,array1);break;case "4":System.out.println("你确定要退出吗?(Y/N)");String a = sc.nextLine();if (a.equals("Y") ) {loopFlag = false;} else {break;}}}}//定义一个方法,用于添加学生信息到集合public static void store(ArrayList<RollCall> array) {//定义一个方法,用于添加学生信息Scanner sc = new Scanner(System.in);System.out.println("请输入您要录入的同学数量:");int count = sc.nextInt();String name;for (int j = 1; j <= count; j++) {System.out.println("请输入第" + j + "位同学的姓名:");name = sc.next();//创建对象,把键盘录入的数据赋值给姓名属性RollCall s = new RollCall();s.setName(name);//将学生对象添加到集合中array.add(s);}//给出录入成功提示System.out.println(count + "名同学已录入成功!");}//定义方法,完成赋值public static void store1(ArrayList<RollCall> array,ArrayList<RollCall>array1) {for (int i = 0; i < array1.size(); i++) {RollCall s = array.get(i);}array1.addAll(array);}public static void examine(ArrayList<RollCall> array1) {//判断集合中是否有数据,如果没有显示提示信息if (array1.size() == 0) {System.out.println("无信息,请先添加信息再查询!");//为了让程序不在往下执行,给出return;return;}for (int i = 0; i < array1.size(); i++) {RollCall s = array1.get(i);System.out.println(s.getName());}}public static void call(ArrayList<RollCall> array,ArrayList<RollCall> array1) {//如果array1集合为空,调用Store1完成赋值if(array1.isEmpty()){store1(array,array1);}RollCall s = new RollCall();Collections.shuffle(array1);Random r = new Random();int index = r.nextInt(array1.size());System.out.println(array1.get(index).getName());//将已重复的元素删除,避免重复array1.remove(index);}}

完成效果

-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
1
请输入您要录入的同学数量:
3
请输入第1位同学的姓名:
wang
请输入第2位同学的姓名:
tang
请输入第3位同学的姓名:
zhang
3名同学已录入成功!
-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
2
wang
tang
zhang
-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
3
tang
-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
3
wang
-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
3
zhang
-----------黄埔学生档案-----------
1.存储同学名字
2.查看全班同学姓名
3.点名
4.退出
-> 请输入您选择的编号:
4
你确定要退出吗?(Y/N)
Y
Process finished with exit code 0

ArrayList集合点名器相关推荐

  1. Java_7.1 ArrayList应用点名器

    1.ArrayList同样可以添加自定义的类 将学生类添加到ArrayList集合中,其中学生类包括学生姓名,年龄 自定义学生类 package demo1;public class Student ...

  2. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

  3. php字符串定义为arraylist,如何把arraylist集合中的字符串数据保存的文本文件中

    分析: (推荐教程:java课程) 通过题目的意思我们可以知道如下内容:ArrayList集合里存储的是字符串 遍历ArrayList集合,把数据获取 然后存储到文本文件中 文本文文件说明使用文本文件 ...

  4. ArrayList 集合

    Arraylist ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类).在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中 ...

  5. java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...

    import java.util.*;/*将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据封装 ...

  6. Java的ArrayList集合_JAVA之ArrayList集合

    /** * ArrayList集合讲解 * 集合的添加.遍历.删除 */ package com.test; import java.util.*; public class test7 { /** ...

  7. C# ArrayList集合

    C# ArrayList集合 集合 可以向数组那样存储多个数据,但是长度不固定.往其中存多少个都可以.     ArrayList:动态数组(不是一个数组,是具有数组的功能再克服了数组的缺点)     ...

  8. C#中ArrayList集合

    C#中ArrayList集合 ArrayList C#语言中的ArrayList,又被称为动态数组. 它的存储空间可以被动态改变,同时还拥有添加.删除元素的功能. 在实际的工作中,可能会为一组数据发生 ...

  9. (Java)ArrayList集合

    ArrayList集合概述和基本使用 ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类. 数组的长度不可以发生改变,但是ArrayList的长度是可以随时变化的 对于Ar ...

最新文章

  1. (笔试题)不用除法操作符,实现两个整数的除法
  2. mysql 导出select语句结果到excel文件等
  3. Linux CentOS 7下 Apache Tomcat 7 安装与配置
  4. Win7下Android模拟器中没有3G网络信号的解决办法
  5. 【GIF动画+完整可运行源代码】C++实现 冒泡排序——十大经典排序算法之一
  6. java foreach order_Java Elements.forEach方法代码示例
  7. linux内核关闭tcp校验,linux内核tcp调优规范与方案
  8. java scala_经过几天的Scala回归Java的10个最烦人的事情
  9. 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...
  10. OpenGL绘制旋转茶壶
  11. cmd设置mysql初始密码_windows下mysql初始密码设置
  12. 【OpenCV/C++】KNN算法识别数字的实现原理与代码详解
  13. Elasticsearch的javaAPI之get,delete,bulk
  14. Unable to process Jar entry
  15. 下载SAP hana镜像文件
  16. WGS84 与 北京54 坐标系互转
  17. 设计-前端设计尺寸与规范
  18. vue-cli脚手架中使用talkingData埋点的方法
  19. 企业app开发要多少钱[APP定制]
  20. 纸飞机 --2013-08-08博客搬家

热门文章

  1. 关于团队建设和个人成长
  2. 百度ECharts地图GeoJson数据在线下载 2021
  3. 前端开发必备工具-网页调试工具
  4. 【U8+】用友U8+12.0在win11系统上IE Web Control 组件无法安装
  5. CISP考试大纲/范围
  6. 群晖webdev挂载中国移动和彩云网盘
  7. 计算机毕设Python+Vue业俊宾馆客房管理系统(程序+LW+部署)
  8. w7电脑蓝屏怎么解决_教你win7电脑蓝屏怎么办
  9. linux使用佳能ip1188,在Linux下安装打印驱动,以佳能LBP2900+为例
  10. 查看文章影响因子的插件_这个浏览器插件可以智能查询SCI论文被引情况