day16_ListSet课后练习题 - 参考答案

文章目录

  • day16_课后练习题
    • 第1题
    • 第2题
    • 第3题
    • 第4题
    • 第5题
    • 第6题
    • 第7题
    • 第8题

day16_课后练习题

第1题

案例:

​ 1、用一个String[]数组存点数

​ 2、用一个String[]数组存花色

​ 3、用一个String[]数组存大王、小王

​ 4、用上面的数组,生成一副扑克牌

​ 5、遍历显示全副扑克牌

​ 6、模拟给4个人随机发牌,每个人11张牌

​ 7、显示每个人的牌和剩余的牌

​ 效果如下:

在这里插入图片描述

package com.atguigu.test01;import java.util.ArrayList;
import java.util.Random;public class Test01 {public static void main(String[] args) {String[] dian = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};String[] hua = {"黑桃","红桃","方片","梅花"};String[] wang = {"大王","小王"};ArrayList<String> list = new ArrayList<String>();for (int i = 0; i < dian.length; i++) {for (int j = 0; j < hua.length; j++) {list.add(hua[j]+dian[i]);}}for (int i = 0; i < wang.length; i++) {list.add(wang[i]);}for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i)+"  ");if((i+1)%10==0){System.out.println();}}System.out.println();System.out.println("发牌:");Random rand = new Random();ArrayList<String> one = new ArrayList<String>();for (int i = 0; i < 11; i++) {one.add(list.remove(rand.nextInt(list.size())));}ArrayList<String> two = new ArrayList<String>();for (int i = 0; i < 11; i++) {two.add(list.remove(rand.nextInt(list.size())));}ArrayList<String> three = new ArrayList<String>();for (int i = 0; i < 11; i++) {three.add(list.remove(rand.nextInt(list.size())));}ArrayList<String> four = new ArrayList<String>();for (int i = 0; i < 11; i++) {four.add(list.remove(rand.nextInt(list.size())));}System.out.println("第1个人:" + one);System.out.println("第2个人:" + two);System.out.println("第3个人:" + three);System.out.println("第4个人:" + four);System.out.println("剩余:" + list);}
}

第2题

  • 模拟乐透号码。

    • 随机生成10个号码放到集合中,范围1-50,作为乐透号码。不能重复。
    • 键盘录入10个整数放到集合中,范围1-50,不能重复。
    • 录入的整数与乐透号码对比,统计猜中了几个。
  • 代码实现,效果如图所示:

    在这里插入图片描述

开发提示:

  • 当使用集合时,可以通过contains方法,判断某集合中是否包含某元素
package com.atguigu.test02;import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class Test02 {public static void main(String[] args) {ArrayList<Integer> lotNumList = lotNum();System.out.println("乐透号码已经生成,游戏开始:");ArrayList<Integer> inputList = inputNum();System.out.println("您输入的号码为:"+inputList);int count  =  countNum(inputList , lotNumList);System.out.println("乐透号码为:"+lotNumList);System.out.println("猜中了:"+count+"个数字");}public static int countNum(ArrayList<Integer> inputList, ArrayList<Integer> lotNumList) {int  count  = 0;for (int i = 0; i < inputList.size(); i++) {Object num  = inputList.get(i);if (lotNumList.contains(num)){count++;}}return count ;}public static ArrayList<Integer> inputNum(){ArrayList<Integer> list = new ArrayList<Integer>();Scanner sc = new Scanner(System.in);for (int i = 0; i < 10; ) {System.out.println("请输入第"+(i+1)+"个数字[1-50]:");int num  = sc.nextInt();if (num >=1 && num<=50 && !list.contains(num)){list.add(num);i++;}else{System.out.println(num+"超过[1-50]范围或重复录入,数字无效,请重新输入");}}sc.close();return list;}public static ArrayList<Integer> lotNum(){ArrayList<Integer> list = new ArrayList<Integer>();Random r = new Random();for (int i = 0; i < 10; ) {int num  = r.nextInt(50) + 1;if (!list.contains(num)){list.add(num);i++;}}return list;}
}

第3题

案例:

​ 1、随机生成10个[1,100]之间的整数,放到List集合中,遍历显示

​ 2、找出前3名最大值,删除它们,注意可能重复

​ 3、显示删除后的结果

​ 效果如下:

在这里插入图片描述

package com.atguigu.test03;import java.util.ArrayList;
import java.util.Random;public class Test03 {public static void main(String[] args) {ArrayList<Integer> nums = getNum();System.out.println("10个随机值:" + nums);ArrayList<Integer> maxList = getTop3(nums);System.out.println("前3个最大的:" + maxList);System.out.println("删除后:" + nums);}public static ArrayList<Integer> getNum() {ArrayList<Integer> list = new ArrayList<Integer>();Random r = new Random();for (int i = 0; i < 10; i++) {int n = r.nextInt(100) + 1;list.add(n);}return list;}public static ArrayList<Integer> getTop3(ArrayList<Integer> list){ArrayList<Integer> maxList = new ArrayList<Integer>();for (int i = 0; i < 3; i++) {Integer max = (Integer) list.get(0);for (int j = 0; j < list.size(); j++) {Integer num = (Integer) list.get(j);if(max < num){max = num;}}maxList.add(max);while(list.contains(max)){list.remove(max);}}return maxList;}}

第4题

  • 随机生成30个数,范围2-100,获取其中的质数。
  • 代码实现,效果如图所示:

在这里插入图片描述

开发提示:

  • 质数:在一个大于1的整数中,除了1和此整数自身外,没法被其他自然数整除的数。
package com.atguigu.test04;import java.util.ArrayList;
import java.util.Random;public class Test04 {public static void main(String[] args) {ArrayList<Integer> ranNum = getRanNum();System.out.println("随机数为:");System.out.println(ranNum);System.out.println("其中的质数为:");ArrayList<Integer> pNum = getPNum(ranNum);System.out.println(pNum);}public static ArrayList<Integer> getPNum(ArrayList<Integer> ranNum) {ArrayList<Integer> list = new ArrayList<Integer>();for (int i = 0; i < ranNum.size(); i++) {Integer integer = (Integer) ranNum.get(i);if (isP(integer)) {list.add(integer);}}return list;}public static ArrayList<Integer> getRanNum() {Random random = new Random();ArrayList<Integer> list = new ArrayList<Integer>();for (int i = 0; i < 30; i++) {list.add(random.nextInt(99) + 2);}return list;}public static boolean isP(int n) {boolean isPrime = true;for (int i = 2; i < n; i++) {if (n % i == 0) {isPrime = false;break;}}return isPrime;}
}

第5题

案例:

​ 1、请定义方法public static int listTest(Collection list,String s)统计集合中指定元素出现的次数

​ 2、创建集合,集合存放随机生成的30个小写字母

​ 3、用listTest统计,某些元素的出现次数

​ 4、效果如下在这里插入图片描述

package com.atguigu.test05;import java.util.ArrayList;
import java.util.Collection;
import java.util.Random;public class Test05 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();Random rand = new Random();for (int i = 0; i < 30; i++) {list.add((char)(rand.nextInt(26)+97)+"");}System.out.println(list);System.out.println("a:"+listTest(list, "a"));	System.out.println("b:"+listTest(list, "b"));	System.out.println("c:"+listTest(list, "c"));System.out.println("x:"+listTest(list, "x"));	}public static int listTest(Collection<String> list, String string) {int count = 0;for (String object : list) {if(string.equals(object)){count++;}}return count;}
}

第6题

案例:键盘录入一个字符串,去掉其中重复字符,打印出不同的那些字符,必须保证顺序。例如输入:aaaabbbcccddd,打印结果为:abcd。效果如图:

在这里插入图片描述

提示:LinkedHashSet的使用

package com.atguigu.test06;import java.util.LinkedHashSet;
import java.util.Scanner;public class Test06 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入一串字母:");String str = input.nextLine();System.out.println("str=" + str);LinkedHashSet<Character> set = new LinkedHashSet<Character>();for (int i = 0; i < str.length(); i++) {set.add(str.charAt(i));}System.out.print("去重后:");String result = "";for (Character object : set) {result += object;}System.out.println(result);}
}

第7题

案例:双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码不重复)

在这里插入图片描述

开发提示:可以使用TreeSet和ArrayList结合

package com.atguigu.test07;import java.util.ArrayList;
import java.util.Random;
import java.util.TreeSet;public class Test07 {public static void main(String[] args) {TreeSet<Integer> red = new TreeSet<Integer>();Random rand = new Random();while(red.size()<6){red.add(rand.nextInt(33)+1);}ArrayList<Integer> list = new ArrayList<Integer>();list.addAll(red);list.add(rand.nextInt(16)+1);//蓝色号码System.out.println("双色球所有号码:" + list);System.out.print("红色号码:");for (int i = 0; i < list.size()-1; i++) {System.out.print(list.get(i)+" ");}System.out.println("蓝色号码:" + list.get(list.size()-1));}
}

第8题

案例:有如下四个学生的成绩:

在这里插入图片描述

(1)用Comparable接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。

(2)用Comparator实现按照姓名排序

(3)效果如下

在这里插入图片描述

package com.atguigu.test08;import java.util.Comparator;
import java.util.TreeSet;public class Test08 {public static void main(String[] args) {System.out.println("按照成绩和年龄排序:");TreeSet<Student> set = new TreeSet<Student>();set.add(new Student("liusan",20,90.0));set.add(new Student("lisi",22,90.0));set.add(new Student("wangwu",20,99.0));set.add(new Student("sunliu",22,100.0));for (Object object : set) {System.out.println(object);}System.out.println("按照姓名排序:");TreeSet<Student> all = new TreeSet<Student>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getName().compareTo(o2.getName());}});for (Student object : set) {all.add(object);}for (Student object : all) {System.out.println(object);}}
}
class Student implements Comparable<Student>{private String name;private int age;private double score;public Student(String name, int age, double score) {super();this.name = name;this.age = age;this.score = score;}public Student() {super();}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";}@Overridepublic int compareTo(Student o) {if(this.getScore()>o.getScore()){return -1;}else if(this.getScore() < o.getScore()){return 1;}return this.getAge() - o.getAge();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/264056.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四节:Vben Admin登录对接后端getUserInfo接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 第三节&#xff1a;Vben Admin登录对接后端login接口 第四节&#xff1a;Vben Admin登录对接后端getUserInfo接口 文章目录 系列文章目录前言一、回顾Vben…

多重网格(Multigrid Method)-1

See https://zhuanlan.zhihu.com/p/49489140?utm_id0

【Linux进程】进程状态---进程僵尸与孤儿

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程排队2.进程状态…

Stable Diffusion 绘画入门教程(webui)-ControlNet(Inpaint)

上篇文章介绍了语义分割Tile/Blur&#xff0c;这篇文章介绍下Inpaint&#xff08;重绘&#xff09; Inpaint类似于图生图的局部重绘&#xff0c;但是Inpain效果要更好一点&#xff0c;和原图融合会更加融洽&#xff0c;下面是案例&#xff0c;可以看下效果&#xff08;左侧原图…

前端基础面试题(一)

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录下... 1.请说明Ajax、Fetch、Axios三者的区别 三者都用于网络请求&#xff0c;但维度不同&#xff1a; Ajax&#xff08;Asynchronous Javascript ang XML&#xff09;&#xff0c;是一种在不重新…

ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

《嵌入式工程师自我修养/C语言》系列——ARM处理器有哪些工作模式和寄存器&#xff1f;各寄存器作用是什么&#xff1f; 一、ARM处理器的工作模式及寄存器1.1 ARM处理器的工作模式1.2 ARM处理器中的寄存器 二、ARM 异常中断处理2.1 什么是异常&#xff1f;异常向量表是什么&…

[RCTF2015]EasySQL1 题目分析与详解

一、题目介绍&#xff1a; 1、题目来源&#xff1a; BUUCTF网址 2、题目介绍&#xff1a; 拿到flag。 二、解题思路&#xff1a; 我们发现题目首页有登录和注册账号两个选项&#xff0c;我们首先尝试注册账号&#xff0c;尝试注册username为admin的账号&#xff0c;输入密码…

FPGA OSERDESE2

Output Parallel-to-Serial Logic Resources (OSERDESE2) OSERDESE2 在Xilinx 7 系列器件是一款专用的并行至串行转换器,具有特定的时钟和逻辑资源,旨在促进高速源同步接口的实现。每个OSERDESE2模块都包括一个专用的数据串行器和 3 状态控制。数据和 3 态串行器都可以在 SD…

TVS管+二极管钳位电路的分析

我们通常的电路中多用TVS管或者单二极管来进行钳位&#xff0c;TVS管二极管同时钳位的情况比较少见&#xff0c;这篇文章就是分析TVS管二极管同时钳位的电路&#xff0c;主要学习其分析思路。 电路如下图&#xff0c;就是个flyback。可以看到&#xff0c;电路中有个钳位电路&a…

petalinux_zynq7 驱动DAC以及ADC模块之五:nodejs+vue3实现web网页波形显示

前文&#xff1a; petalinux_zynq7 C语言驱动DAC以及ADC模块之一&#xff1a;建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二&#xff1a;petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

MySQL锁三部曲:临键、间隙与记录的奇妙旅程

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 MySQL锁三部曲&#xff1a;临键、间隙与记录的奇妙旅程 前言临键锁的奥秘间隙锁记录锁 前言 在数据库世界中&#xff0c;锁是维护数据完整性的一种关键机制。而MySQL中的临键锁、间隙锁和记录锁则是锁…

博客阿里云服务器2024年最新优惠价格表,61元起

博客 阿里云服务器2024年最新优惠价表&#xff0c;轻量级应用服务器61元起&#xff0c;云服务器99元起 01-30 第591章 2024年阿里云服务器最新优惠价是多少&#xff1f; 阿里云服务器的租用价格在不同时期是不同的。 进入2024年&#xff0c;阿里云服务器的优惠价格也发生了…

【Python笔记-设计模式】桥接模式

一、说明 桥接模式是一种结构型设计模式&#xff0c; 主要用于将抽象部分与它的实现部分分离&#xff0c; 从而能在开发时分别使用&#xff0c;使系统更加灵活&#xff0c;易于扩展。 (一) 解决问题 所有 组合类的数量将以几何级数增长 抽象和实现分离&#xff1a;桥接模式可…

K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

通配符证书的作用

通配符证书是一种 SSL/TLS 证书&#xff0c;可用于保护多个域&#xff08;主机&#xff09;&#xff0c;由域名字段中的通配符 (*) 指示。这种证书主要用于具有许多子域的组织。通配符证书对主域及其所有一级子域有效。例如&#xff0c;一个针对 *.example.com 的通配符证书可以…

SSM框架学习笔记07 | Spring MVC入门

文章目录 1. HTTP协议2. Spring MVC2.1. 三层架构2.2. MVC&#xff08;解决表现层的问题&#xff09;2.3. 核心组件 3. Thymeleaf3.1. 模板引擎3.2. Thymeleaf3.3. 常用语法 代码 1. HTTP协议 网址&#xff1a;https://www.ietf.org/ &#xff08;官网网址&#xff09; https:…

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10&#xff08;双系统安装的详细图文步骤教程&#xff09; 一、准备工作准备项1&#xff1a;U盘作为系统安装盘准备项2&#xff1a;您需要安装的系统镜像 二、启动转换助理步骤1&#xff1a;找到启动转换助理步骤2&#xff1a;启动转换助理步骤3&…

Unity接入SQLite (一):SQLite介绍

1.简介 SQLite是一个开源的嵌入式关系数据库管理系统。它是一种轻量级的数据库引擎&#xff0c;不需要单独的服务器进程&#xff0c;可以直接嵌入到应用程序中使用。Sqlite使用简单、高效&#xff0c;并且具有对标准SQL的完整支持。它适用于需要在本地存储和访问数据的应用程序…

docker-compose 搭建laravel环境

laravel环境包含nginx,mysql,php7.4,redis 一、安装好docker后pull镜像 1.nginx镜像 docker pull nginx:latest单独启动容器 docker run --name nginx -p 80:80 -d nginx 2.php镜像 docker pull php:7.4-fpm3.mysql镜像 docker pull mysql:5.74.redis镜像 docker pull r…

(done) 两个矩阵 “相似” 是什么意思?

参考视频&#xff1a;https://www.bilibili.com/video/BV1zu411673J/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考资料&#xff1a;https://baike.baidu.com/item/%E7%9B%B8%E4%BC%BC%E7%9F%A9%E9%98%B5/10369874?frge_a…