Java-黑马Java学习作业-day07综合练习

news2024/11/20 8:27:49

学习视频链接:黑马Java学习视频

文章目录

  • 练习一:飞机票
  • 练习二:打印素数
  • 练习三:验证码
  • 练习四:复制数组
  • 练习五:评委打分
  • 练习六:数字加密
  • 练习七:数字解密
  • 练习八:抽奖
    • 解法一:
    • 解法二:
  • 练习九:双色球


练习一:飞机票

需求:

​ 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。

​ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

代码示例:

import java.util.Scanner;

/**
 * @ClassName: codePractice01
 * @Author: Kox
 * @Data: 2023/1/13
 * @Sketch:
 */
public class codePractice01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入飞机原价格:");
        int price = sc.nextInt();
        System.out.print("请输入月份:");
        int month = sc.nextInt();
        System.out.print("请输入舱位:(0是头等,1是经济)");
        int level = sc.nextInt();
        if (month >= 5 && month <= 10) {
            price = getPrice(price, level, 0.9, 0.85);
        } else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)) {
            price = getPrice(price, level, 0.7, 0.65);
        } else {
            System.out.println("月份输入错误");
        }
        System.out.println(price);
    }

    public static int getPrice(int price, int level , double v0, double v1) {
        if (level == 0) {
            price = (int) (price * v0);
        } else if (level == 1){
            price = (int) (price * v1);
        } else {
            System.out.println("没有这个舱位!");
        }
        return price;
    }
}

练习二:打印素数

​ 判断101~200之间有多少个素数,并输出所有素数。

备注:素数就是质数

代码示例:

/**
 * @ClassName: cn.kox.practice.codePractice02
 * @Author: Kox
 * @Data: 2023/1/13
 * @Sketch: 找质数
 */
public class codePractice02 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                System.out.print(i + "\t");
                count++;
            }
        }
        System.out.println("\n有" + count + "个质数。");
    }
}

练习三:验证码

需求:

​ 定义方法实现随机产生一个5位的验证码

验证码格式:

​ 长度为5

​ 前四位是大写字母或者小写字母

​ 最后一位是数字

代码示例:

import java.util.Arrays;
import java.util.Random;

/**
 * @ClassName: codePractice03
 * @Author: Kox
 * @Data: 2023/1/13
 * @Sketch: 开发验证码
 */
public class codePractice03 {
    public static void main(String[] args) {
        char[] letter = new char[52];
        for (int i = 0; i < letter.length; i++) {
            if (i <= 25) {
                letter[i] = (char)(97 + i);
            } else {
                letter[i] = (char)(65 + i - 26);
            }
        }
        Random r = new Random();
//        String verify = "";
        char[] verify = new char[5];
        for (int i = 0; i <= 4; i++) {
            int index = r.nextInt(letter.length - 1) + 1;
            if (include(verify, letter, index)) {
                verify[i] = letter[index];
            }
            if (i == 4) {
                index = r.nextInt(10) + 48;
                verify[i] = (char) index;
            }
        }
        System.out.println(Arrays.toString(verify));
    }

    public static boolean include(char[] brr, char[] arr, int num) {
        for (int i = 0; i < brr.length - 1; i++) {
            if (brr[i] == arr[num]) {
                return false;
            }
        }
        return true;
    }
}

练习四:复制数组

需求:

​ 把一个数组中的元素复制到另一个新数组中去。

代码示例:

import java.util.Arrays;

/**
 * @ClassName: codePractice04
 * @Author: Kox
 * @Data: 2023/1/13
 * @Sketch: 数组元素复制
 */
public class codePractice04 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 5, 6, 99, 100};
        int[] brr = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            brr[i] = arr[i];
        }
        System.out.println(Arrays.toString(brr));
    }
}

练习五:评委打分

需求 :

​ 在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

代码示例:

import java.util.Arrays;
import java.util.Random;

/**
 * @ClassName: codePractice05
 * @Author: Kox
 * @Data: 2023/1/13
 * @Sketch: 评委打分
 */
public class codePractice05 {
    public static void main(String[] args) {
        int[] arr = new int[6];     // 评委的分数
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int rScore = r.nextInt(101);
            arr[i] = rScore;
        }
        int score = 0;
        for (int i = 0; i < arr.length; i++) {
            score += arr[i];
        }
        int maxScore = getMax(arr);
        int minScore = getMin(arr);
        double endScore = (double) (score - maxScore - minScore) / (arr.length - 2);
        System.out.println(Arrays.toString(arr));
        System.out.println("去掉一个最高分:" + maxScore + ",去掉一个最低分:" + minScore + ",最后得分" + endScore + "分儿。");
    }

    public static int getMax(int[] arr) {
        int maxScore = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (maxScore < arr[i]) {
                maxScore = arr[i];
            }
        }
        return maxScore;
    }

    public static int getMin(int[] arr) {
        int minScore = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (minScore > arr[i]) {
                minScore = arr[i];
            }
        }
        return minScore;
    }
}

练习六:数字加密

需求:

​ 某系统的数字密码(大于0),比如1983,采用加密方式进行传输。

规则如下:

​ 先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。

举例:

		1	9	8	3
+5		6   14  13  8
%10		6   4   3   8
反转	   8   3   4   6
加密后的结果就是:8346

代码示例:

/**
 * @ClassName: codePractice06
 * @Author: Kox
 * @Data: 2023/1/14
 * @Sketch: 数字加密
 */
public class codePractice06 {
    public static void main(String[] args) {
        int[] arr = {1, 9 , 8 , 3};
        int number = 0;
        for (int i = arr.length-1; i >= 0; i--) {
            number = number * 10 + getNum(arr[i]);
        }
        System.out.print("加密后的结果就是:" + number);
    }

    public static int getNum(int num) {
        num = (num + 5) % 10;
        return num;
    }

}

练习七:数字解密

把上一题加密之后的数据进行解密

代码示例:

/**
 * @ClassName: codePractice07
 * @Author: Kox
 * @Data: 2023/1/14
 * @Sketch: 数字解密
 */
public class codePractice07 {
    public static void main(String[] args) {
        int[] arr = {8, 3, 4, 6};
        int number = 0;
        for (int i = arr.length-1; i >= 0; i--) {
            number = number * 10 + getNum(arr[i]);
        }
        System.out.println(number);
    }

    public static int getNum(int num) {
        num = (num + 5) % 10;
        return num;
    }
}

练习八:抽奖

需求:

​ 一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)

888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出

解法一:

import java.util.Arrays;
import java.util.Random;

/**
 * @ClassName: codePractice08
 * @Author: Kox
 * @Data: 2023/1/14
 * @Sketch: 抽奖
 */
public class codePractice08 {
    public static void main(String[] args) {
        int[] arr = {2, 588, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[index];
            arr[index] =temp;
        }
        System.out.println(Arrays.toString(arr));
    }

}

解法二:

import java.util.Random;

/**
 * @ClassName: codeHomework11
 * @Author: Kox
 * @Data: 2023/1/10
 * @Sketch: 题目11
 */
public class codeHomework11 {
    public static void main(String[] args) {
        int[] arr = {2, 588, 1000, 10000};
        int[] brr = new int[arr.length];
        Random r = new Random();
        int flag = 0;
        while (flag < arr.length) {
            int index = r.nextInt(arr.length);
            if (returnNum(brr, arr[index])) {
                brr[flag] = arr[index];
                System.out.println(brr[flag] + "元的奖金被抽出");
                flag++;
            }
        }
    }

    public static boolean returnNum(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                return false;
            }
        }
        return true;
    }
}

练习九:双色球

在这里插入图片描述
代码示例:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
 * @ClassName: codePractice09
 * @Author: Kox
 * @Data: 2023/1/14
 * @Sketch: 双色球系统
 */
public class codePractice09 {
    public static void main(String[] args) {
        int[] red = new int[33];
        red = getArr(red);

        int[] blue = new int[16];
        blue = getArr(blue);

        int[] luckyArr = new int[7];    // 抽出的中奖数组
        Random r = new Random();
        int index = 0;
        while (index < luckyArr.length) {
            int redIndex = r.nextInt(red.length);
            if (getNum(luckyArr, red[redIndex])) {
                luckyArr[index] = red[redIndex];
                index++;
            }
            if (index == luckyArr.length - 1) {
                int blueIndex = r.nextInt(blue.length);
                luckyArr[index] = blue[blueIndex];
                index++;
            }
        }

        // System.out.println("本次奖池号码为:" + Arrays.toString(luckyArr));

        int[] userArr = new int[luckyArr.length];   // 用户输入的号码
        Scanner sc = new Scanner(System.in);
        int count = 1;
        while (count <= userArr.length) {
            if (count == userArr.length) {
                System.out.print("输入蓝色球的号码:");
                int num = sc.nextInt();
                if (num >= blue[0] && num <= blue[blue.length-1]) {
                    userArr[count-1] = num;
                    count++;
                } else {
                    System.out.println("奖池没有该数字!");
                }
            } else {
                System.out.print("输入红色球的第" + count + "个数字:");
                int num = sc.nextInt();
                if (num >= red[0] && num <= red[red.length-1]) {
                    if (getNum(userArr,num)) {
                        userArr[count-1] = num;
                        count++;
                    } else {
                        System.out.println("数字输入重复!");
                    }
                } else {
                    System.out.println("奖池没有该数字!");
                }
            }
        }
        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userArr.length; i++) {
            if (i == userArr.length-1) {
                if (luckyArr[i] == userArr[i]) {
                    blueCount++;
                }
            } else {
                if (luckyArr[i] == userArr[i]) {
                    redCount++;
                }
            }
        }
        System.out.println("本次奖池号码为:" + Arrays.toString(luckyArr));
        System.out.println("你竞猜的号码为:" + Arrays.toString(userArr));
        System.out.println("红蓝中将次数分别是:"+ redCount + ":" + blueCount);
        switch (redCount) {
            case 0,1,2 -> System.out.println(blueCount != 0 ? "六等奖5元" : redCount != 0 ? "六等奖:5元" : "无奖");
            case 3 -> System.out.println(blueCount != 0 ? "五等奖:10元" : "六等奖:5元");
            case 4 -> System.out.println(blueCount != 0 ? "四等奖:200元" : "五等奖:10元");
            case 5 -> System.out.println(blueCount != 0 ? "三等奖:3000元" : "四等奖:200元");
            case 6 -> System.out.println(blueCount != 0 ? "一等奖:最高1000万" : "二等奖:最高500万");
        }

    }

    public static int[] getArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }
        return arr;
    }

    public static boolean getNum(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                return false;
            }
        }
        return true;
    }


}

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

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

相关文章

【C++11】—— 可变参数模板

目录 一、可变参数模板概念以及定义方式 二、参数包的展开 1. 递归函数方式展开参数包 2. 逗号表达式展开参数包 三、STL容器中的empalce相关接口函数 一、可变参数模板概念以及定义方式 在c11之前&#xff0c;类模板和函数模板只能含有固定数量的模板参数&#xff0c;c11…

JavaScript高级 ES5 面向对象原型继承

原型以及ES5中实现继承1. 对象和函数的原型1. 普通对象的原型 [[prototype]]2. 函数的原型 prototype2. new、constructor1. new 操作符2. constructor属性3. 将方法放到原型上4. 创建对象的内存表现5. 重写原型对象3. 原型链的查找顺序4. 原型链实现的继承5. 借用构造函数继承…

深入URP之Shader篇10: 深度值专题(1)

之前研究Unlit shader的时候就遇到一些Z值相关的问题&#xff0c;一笔带过了&#xff0c;比如ComputeFogFactor中的UNITY_Z_0_FAR_FROM_CLIPSPACE。今天就把URP Shader中出现的Z相关的问题做一个专题一起研究下。 深度缓冲的方向和UNITY_REVERSED_Z 先说这个关于z的宏&#x…

nacos:服务注册与发现

导入SpringCloudAlibaba相关的依赖&#xff0c;并在父工程将依赖进行管理 <dependencyManagement> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-s…

Java EE|多线程代码实例之定时器与线程池

文章目录&#x1f534;定时器什么是定时器以及开发中的作用标准库中的定时器定时器的实现&#x1f534;线程池什么是线程池标准库中的线程池创建一个线程池ThreadPoolExecutor构造方法解析线程池的实现&#x1f534;定时器 什么是定时器以及开发中的作用 程序中的定时器功能与…

【互联网大厂机试真题 - 华为】九宫格

题目描述 九宫格是一款广为流传的游戏,起源于河图洛书。游戏规则是:1到9九个数字放在3x3的格子中,要求每行、每列以及两个对角线上的三数之和都等于15. 在金麻名著《射雕英雄传》中黃蓉曾给九宫格的一种解法,口诀:戴九恩一,左三右七,二四有肩,八六为足,五居中央。解法…

【云原生进阶之容器】第四章Operator原理4.3节--Operator模式

1 Operator概述 1.1 诞生背景 Kubernetes实际是期望状态管理器。先在Kubernetes中指定应用程序期望状态(实例数,磁盘空间,镜像等),然后它会尝试把应用维持在这种状态。Kubernetes的控制平面运行在Master节点上,它包含数个controller以调和应用达到期望状态: 检查当前的…

【阶段三】Python机器学习30篇:机器学习项目实战:智能推荐系统的基本原理与计算相似度的常用方法

本篇的思维导图: 智能推荐系统模型 智能推荐系统属于非监督式学习,是机器学习一个非常重要的应用领域,它能带来的经济价值往往是直接且非常可观的。 智能推荐系统的基本原理 智能推荐系统的应用场景 互联网每天都在产生海量信息,用户行为数据呈现爆发式增长…

PyTorch - 常见神经网络

文章目录LeNetAlexNetDropoutAlexNet 网络结构torchvision中的AlexNet的实现ZFNetVGG-NetsVGG 各网络VGG-16 网络结构GoogLeNet代码实现ResNetDenseNetRNNLSTMGRULeNet 1998年&#xff0c;由 LeCun 提出用于手写数字识别任务只有5层结构&#xff1b;目前看来不输入深度学习网络…

智能售货机系统帝可得

智能售货机 概述项目使用springcloudalibaba中提供的短信服务图形验证码生成多端登录/网关统一鉴权对象存储服务代码的自动填充微服务集成emq&#xff0c;发送emq工单业务流 接收工单 拒绝工单 运维工单补货工单使用xxl-job进行任务调度lkd集成xxl-job自动创建维修工单自动…

设计模式_结构型模式 -《代理模式》

设计模式_结构型模式 -《代理模式》 笔记整理自 黑马程序员Java设计模式详解&#xff0c; 23种Java设计模式&#xff08;图解框架源码分析实战&#xff09; 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承…

Docker 架构和安装

Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器&#xff08;Con…

<Linux> Linux项目自动化构建工具—makemakefile的使用

< Linux> Linux 项目自动化构建工具—make/makefile的使用 文章目录< Linux> Linux 项目自动化构建工具—make/makefile的使用一、make/makefile的背景二、如何编写 makefile1.依赖关系和依赖方法2.makefile的使用3.clean的使用4.多文件编译5.伪目标 .PHONY6.三个时…

无约束优化——线性搜索法

无约束优化——线性搜索法&#xff08;line search&#xff09;前言概述构建关于步长的函数Wolfe条件Strong Wolfe条件Zoutendijk条件后记前言 该系列为学习笔记系列&#xff0c;所有内容可以在 Numerical Optimization (2nd Edition) 中找到&#xff0c;该书十分有用经典建议…

组件封装 - Tabs组件

首先我们先来看一下 Element UI 里面的 Tabs 是怎么样的 <template><el-tabs v-model"activeName" class"demo-tabs" tab-click"handleClick"><el-tab-pane label"User" name"first">User</el-tab-pa…

基于matlab的汽车牌照识别程序详细教程

设计一个基于matlab的汽车牌照识别程序&#xff0c;能够实现车牌图像预处理&#xff0c;车牌定位&#xff0c;字符分割&#xff0c;然后通过神经网络对车牌进行字符识别&#xff0c;最终从一幅图像中提取车牌中的字母和数字&#xff0c;给出文本形式的车牌号码。关键词&#xf…

C语言 一个特殊的数组【柔性数组】

文章目录前言柔性数组的特点柔性数组的使用柔性数组的优势写在最后前言 也许你从来就没有听过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但他是真的存在&#xff1b;柔性数组的概念存在于C99标准当中&#xff0c;C99标准表示&#xff1a;结构体的最后…

Linux-进程概念

目录 进程状态&#xff1a; 操作系统简图 调用进程bin.exe的详细过程 cpu运行队列的结构 R进程和阻塞进程 进程状态&#xff1a;挂起&#xff1a; Linux操作&#xff1a; ​编辑 R运行状态 S休眠状态 T暂停状态&#xff1a; kill kill -18 表示继续 kill -9 杀死进程…

肿瘤内微生物群在癌症转移中的新作用

谷禾健康 癌症是一种复杂的疾病&#xff0c;归因于多因素变化&#xff0c;导致治疗策略困难。 90%的癌症患者死于复发或转移。癌症转移是恶性肿瘤进展的关键步骤&#xff0c;由癌细胞内在特性和外在环境因素决定。 一些微生物组通过诱导癌性上皮细胞和慢性炎症促进癌发生、癌症…

光耦合器:类型及其应用

光耦合器&#xff1a;类型及其应用 介绍 光耦合器&#xff08;也称为光隔离器&#xff09;是一种在两个隔离电路之间传输电信号的半导体器件。光耦合器由两部分组成&#xff1a;发射红外光的LED和检测LED光的光敏器件。这两个部件都装在一个带有连接销的黑匣子中。输入电路接收…