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.pswp.cn/news/697380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697380.shtml
英文地址,請注明出處:http://en.pswp.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; 發布前要選擇刪除所有現有文…

【PostgreSQL】PostgreSQL詳細介紹

PostgreSQL詳細介紹 一、什么是PostgreSQL&#xff1f;二、為什么要使用PostgreSQL&#xff1f;三、PostgreSQL功能列表3.1 數據類型3.2 數據完整性3.3 并發&#xff0c;性能3.4 可靠性、災難恢復3.5 安全3.6 可擴展性3.7 國際化&#xff0c;文本搜索 四、參考資料 關于Postgre…

使用MongoDB數據庫和Mongoose庫在Node.js中進行數據存儲

在Node.js中使用MongoDB數據庫和Mongoose庫進行數據存儲是前端開發中常用的技術之一。MongoDB是一種非關系型數據庫&#xff0c;具有高性能、易擴展等優點&#xff1b;而Mongoose是在Node.js中對MongoDB進行操作的框架&#xff0c;簡化了數據庫操作&#xff0c;并提供了豐富的功…

音視頻技術-雙聲道立體聲與卡儂平衡線的“糾葛”

目錄 一、新問題 二、問題排查 三、故障總結 四、原理分析 五、解決方案 1、救急 2、轉接線1 3、轉接線2

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…

Swift基礎知識:20.Swift方法

在 Swift 中&#xff0c;方法是與特定類型相關聯的函數。方法可以用于實例類型&#xff08;實例方法&#xff09;或類型本身&#xff08;類型方法&#xff09;。方法允許類型的實例執行特定的任務&#xff0c;也可以修改實例本身或實例的屬性。 實例方法&#xff08;Instance …

【力扣hot100】刷題筆記Day10

前言 一鼓作氣把鏈表給刷完&#xff01;&#xff01;中等題困難題沖沖沖啊啊啊&#xff01; 25. K 個一組翻轉鏈表 - 力扣&#xff08;LeetCode&#xff09; 模擬 class Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 翻轉…

題記(46)--兩個多項式的和

目錄 一、題目內容 二、輸入描述 三、輸出描述 四、輸入輸出示例 五、完整C語言代碼 一、題目內容 輸入兩個多項式&#xff0c;計算它們的和。 每個多項式有若干對整數表示&#xff0c;每組整數中&#xff0c;第一個整數表示系數&#xff08;非0&#xff09;&#xff0c;第…

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

輸入簡短文本&#xff0c;生成更加豐富的長文。 “溫度”&#xff08;temperature&#xff09;&#xff1a;控制文本生成的多樣性。 一、定制客戶郵件 根據客戶的評價和其中的情感傾向&#xff0c;使用大語言模型針對性地生成回復郵件。將大大提升客戶滿意度。 # 我們可以在…

云原生 - K8s命令合集

我是南城余&#xff01;阿里云開發者平臺專家博士證書獲得者&#xff01; 歡迎關注我的博客&#xff01;一同成長&#xff01; 一名從事運維開發的worker&#xff0c;記錄分享學習。 專注于AI&#xff0c;運維開發&#xff0c;windows Linux 系統領域的分享&#xff01; 知…

兩種動態代理(可以看到代理類的樣子,方便理解)

這里寫目錄標題 jdk動態代理例子CGlib動態代理例子手寫spring中的事務部分自定義注解版aop實現方式 Spring的兩大重點&#xff0c;IOC和AOP&#xff0c;今天我們就來學AOP&#xff0c;眾所周知AOP的底層是動態代理&#xff0c;讓我們看一下這兩種動態代理的區別。 例子&#x…

tvm交叉編譯android可執行參考資料整理

主要參考這個&#xff1a; TVM部署神經網絡模型到android端_tvm android-CSDN博客 其他相關鏈接&#xff1a; TVM部署神經網絡模型到android端 - 代碼先鋒網 Ubuntu交叉編譯 arm板子上的TVM_tvm arm-CSDN博客 TVM部署神經網絡模型到android端 - 代碼先鋒網 tvm部署c神經網…

【Spring連載】使用Spring Data訪問 MongoDB(五)----生命周期事件

【Spring連載】使用Spring Data訪問 MongoDB&#xff08;五&#xff09;----生命周期事件Lifecycle Events 一、實體回調Entity Callbacks1.1 實現實體回調1.2 注冊實體回調 二、特定存儲的實體回調 一、實體回調Entity Callbacks 1.1 實現實體回調 1.2 注冊實體回調 二、特…

【結合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;今天…