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.mzph.cn/news/697380.shtml

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

相关文章

C++ 文件操作-文本文件-读取和打开文件方法详解

读文件步骤 #include <iostream> using namespace std; #include <fstream> #include <string> //文本文件 读文件void test(){// 1 包含头文件// 2 创建流对象ifstream ifs;// 3 打开文件 并且判断是否打开成功ifs.open("table.txt",ios::in); //…

VS 2015 发布 WebService

本文介绍了使用VS2015发布WebService的步骤 右键项目点击发布 选择文件系统和目标位置 配置选择Debug-Any CPU&#xff08;选其他也可以&#xff09; 4. 点击发布&#xff0c;在对应文件夹中可以看到发布出来的内容。 记录遇到的问题&#xff0c; 发布前要选择删除所有现有文…

使用MongoDB数据库和Mongoose库在Node.js中进行数据存储

在Node.js中使用MongoDB数据库和Mongoose库进行数据存储是前端开发中常用的技术之一。MongoDB是一种非关系型数据库&#xff0c;具有高性能、易扩展等优点&#xff1b;而Mongoose是在Node.js中对MongoDB进行操作的框架&#xff0c;简化了数据库操作&#xff0c;并提供了丰富的功…

Js的 Promise的 then catch 笔记240222

Js的 Promise的 then catch 笔记240222 基本用法 new Promise(f>{setTimeout(ev>{f("一秒后输出控制台");},1000); }).then(f的参数>{console.log(f的参数); }); // 控制台输出: 一秒后输出控制台上面代码中, f 的标准名叫做 resolve , 所以应该写成 new …

知识图谱数据处理流程是什么

在当今信息时代&#xff0c;数据已经成为企业决策和业务发展的重要驱动力。然而&#xff0c;随着数据量的不断增加&#xff0c;传统的数据处理方法已经难以满足需求。知识图谱作为一种新兴的技术&#xff0c;正逐渐成为处理大规模数据的关键工具。本文将深入探讨知识图谱的数据…

写代码中的一些“小技巧”

目录 前言 1.不注重代码格式 1.1 空格 1.2 换行 2.随意的命名 2.1 有意义的参数名 2.2 见名知意 2.3 参数名风格一致 3.出现大量重复代码 4.从不写注释 5.方法过长 6.参数过多 7.代码层级太深 8.判断条件太多 9.硬编码 10.事务过大 11.在循环中远程调用 11.1 …

CSS 面试题汇总

CSS 面试题汇总 1. 介绍下 BFC 及其应 参考答案&#xff1a; 参考答案&#xff1a; 所谓 BFC&#xff0c;指的是一个独立的布局环境&#xff0c;BFC 内部的元素布局与外部互不影响。 触发 BFC 的方式有很多&#xff0c;常见的有&#xff1a; 设置浮动overflow 设置为 auto、scr…

【力扣hot100】刷题笔记Day10

前言 一鼓作气把链表给刷完&#xff01;&#xff01;中等题困难题冲冲冲啊啊啊&#xff01; 25. K 个一组翻转链表 - 力扣&#xff08;LeetCode&#xff09; 模拟 class Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 翻转…

#LLM入门|Prompt#1.7_文本拓展_Expanding

输入简短文本&#xff0c;生成更加丰富的长文。 “温度”&#xff08;temperature&#xff09;&#xff1a;控制文本生成的多样性。 一、定制客户邮件 根据客户的评价和其中的情感倾向&#xff0c;使用大语言模型针对性地生成回复邮件。将大大提升客户满意度。 # 我们可以在…

两种动态代理(可以看到代理类的样子,方便理解)

这里写目录标题 jdk动态代理例子CGlib动态代理例子手写spring中的事务部分自定义注解版aop实现方式 Spring的两大重点&#xff0c;IOC和AOP&#xff0c;今天我们就来学AOP&#xff0c;众所周知AOP的底层是动态代理&#xff0c;让我们看一下这两种动态代理的区别。 例子&#x…

【结合OpenAI官方文档】解决Chatgpt的API接口请求速率限制

OpenAI API接口请求速率限制 速率限制以五种方式衡量&#xff1a;RPM&#xff08;每分钟请求数&#xff09;、RPD&#xff08;每天请求数&#xff09;、TPM&#xff08;每分钟令牌数&#xff09;、TPD&#xff08;每天令牌数&#xff09;和IPM&#xff08;每分钟图像数&#x…

BUUCTF第二十四、二十五题解题思路

目录 第二十四题CrackRTF 第二十五题[2019红帽杯]easyRE1 第二十四题CrackRTF 查壳 无壳&#xff0c;32位&#xff0c;用32位IDA打开&#xff0c;打开后的main函数很短&#xff0c;可以找到一句“jmz _main_0”——跳转到 _main_0&#xff0c;说明真正的主函数是_main_0&am…

React 模态框的设计(二)

自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求&#xff0c;比如关于弹窗&#xff0c;每个应用都会用到&#xff0c;但是有时我们使用的框架中提供的弹窗功能也是功能有限&#xff0c;无法满足我们的应用需求&#xff0c;今天…

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框 问题: 由于el-select组件的el-select-dropdown部分是自动插入在最外层Body上的&#xff0c;所以在当前组件的scoped中让el-select-dropdown组件display:none不会生效所以需要&#xff1a; :popper-…

TiDB 7.5.0 LTS 高性能数据批处理方案

过去&#xff0c;TiDB 由于不支持存储过程、大事务的使用也存在一些限制&#xff0c;使得在 TiDB 上进行一些复杂的数据批量处理变得比较复杂。 TiDB 在面向这种超大规模数据的批处理场景&#xff0c;其能力也一直在演进&#xff0c;其复杂度也变得越来越低&#xff1a; ○ 从…

11.CSS3的媒介(media)查询

CSS3 的媒介(media)查询 经典真题 如何使用媒体查询实现视口宽度大于 320px 小于 640px 时 div 元素宽度变成 30% 媒体查询 媒体查询英文全称 Media Query&#xff0c;顾名思义就是会查询用户所使用的媒体或者媒介。 在现在&#xff0c;网页的浏览终端是越来越多了。用户可…

C++:string类

标准库中的string类 string类 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持&#xff0c;其接口类似于标准字符容器的接口&#xff0c;但添加了专门用于操作单字节字符字符串的设计特性。 3. string类是使用char(即作为它的字符类型&#xff0c;使用…

ChatGPT 是什么

文章目录 一、ChatGPT 是什么二、ChatGPT的发明者三、ChatGPT的运作方式四、ChatGPT的技术五、ChatGPT的优势六、ChatGPT的局限性七、ChatGPT的应用八、ChatGPT的未来九、总结 一、ChatGPT 是什么 OpenAI的ChatGPT&#xff0c;即Chat Generative Pre-Trained Transformer&…

3个精美的wordpress企业网站模板

WordPress企业网站模板 https://www.zhanyes.com/qiye/6305.html WordPress企业官网模板 https://www.zhanyes.com/qiye/6309.html WordPress律师模板 https://www.zhanyes.com/qiye/23.html

SQL注入漏洞解析--less-2

首先我们进入第二关 思路&#xff1a; 1.先判断是什么类型的注入 2.根据类型我们在找注入点 步骤&#xff1a; 1.提示我们输入id数字&#xff0c;那我们先输入1猜一下 2.这里正常回显&#xff0c;当我们后边加上时可以看到报错&#xff0c;且报错信息看不到数字&#xff0…