(day2)自学java综合练习

news2024/11/15 15:27:57

目录

1.卖飞机票

2.找质数

3.开发验证码

4.数组元素的复制

5.评委打分

6.数字加密

7.数字解密

8.抢红包

9.模拟双色球

10.二维数组


 

1.卖飞机票

  • 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
  • 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.print("请输入机票月份(示例:1):");
        int month = sc.nextInt();
        System.out.print("头等舱请输入:1,经济舱请输入:2 :");
        int planeSeat = sc.nextInt();
        if (month >= 5 && month <= 10) {
            if (planeSeat == 1) {
                ticket = (int) (ticket * 0.9);
            } else if (planeSeat == 2) {
                ticket = (int) (ticket * 0.85);
            }else {
                System.out.println("不存在此舱位");
            }
            System.out.println("价格为:" + ticket);
        } else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)) {
            if (planeSeat == 1) {
                ticket = (int) (ticket * 0.7);
            } else if (planeSeat == 2) {
                ticket = (int) (ticket * 0.65);
            }else {
                System.out.println("不存在此舱位");
            }
            System.out.println("价格为:" + ticket);
        }else {
            System.out.println("不存在此月份");
        }
    }
}

2.找质数

  • 判断101~200之间有多少个素数,并输出所有素数。
public class Test1 {
    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){
                count++;
                System.out.println("当前数字"+i+"是质数");
            }
        }
        System.out.println("有"+count+"个质数");
    }
}

3.开发验证码

  • 定义方法实现随机产生一个5位的验证码
  • 验证码格式:长度为5,前四位是大写字母或者小写字母,最后一位是数字
import java.util.Random;

public class Test1 {
    public static void main(String[] args) {
        char[]arrEnglish=new char[52];
//向数组中添加大小写字母
        for (int i = 0; i < arrEnglish.length; i++) {
            arrEnglish[i]=(char)(97+i);
            if(i>25){
                arrEnglish[i]=(char)(65+i-26);
            }
        }
        Random r=new Random();
//定义一个字符串类型的变量,来记录最终结果
        String result="";
        for (int i = 0; i < 4; i++) {
            int randomIdenx=r.nextInt(arrEnglish.length);
//利用随机索引,获取相应元素
            result=result+arrEnglish[randomIdenx];
        }
        int number=r.nextInt(10);
        String resultLast=result+number;
        System.out.println(resultLast);
    }
}

4.数组元素的复制

  • 把一个数组的元素复制到一个新的数组中去。
public class Test1 {
    public static void main(String[] args) {
        int[]arr={1,2,3,4,5,6,7,8,9};
        int[]arrNew=new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arrNew[i]=arr[i];
        }
        for (int i = 0; i < arrNew.length; i++) {
            System.out.print(arrNew[i]);
        }
    }
}

5.评委打分

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

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        int[]score=scoreArr();
        int max=getMax(score);
        int min=getMin(score);
        int avg=getAvg(max,min,score);
        System.out.println(avg);
    }
//获取最大值
    public static int getMax(int[] score) {
        int max=0;
        for (int i = 0; i < score.length; i++) {
            if(max<score[i]){
                max=score[i];
            }
        }
        return max;
    }
//获取最小值
    public static int getMin(int[]score) {
        int min=score[0];
        for (int i = 0; i < score.length; i++) {
            if(min>score[i]){
                min=score[i];
            }
        }
        return min;
    }
//计算去掉最高分和最低分的平均成绩
    public static int getAvg(int max,int min,int[]score) {
        int sum=0;
        for (int i = 0; i < score.length; i++) {
            sum=sum+score[i];
        }
        int avg=(sum-max-min)/4;
        return avg;
    }
    //获取数组
    public static int[] scoreArr(){
        int[] score =new int[6];
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < score.length; ) {
            System.out.print("请评委打分(1~100):");
            int temp=sc.nextInt();
            if(temp>=1&&temp<=100){
                score[i]=temp;
                i++;     //只有输入数据正确时i才加1
            }
            else {
                System.out.println("数字范围有误");
            }

        }
        return score;
    }
}

6.数字加密

  •  某系统的数字密码(大于0),比如1983,采用加密方式传输。
  • 规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
//1983加密

public class Test1 {
    public static void main(String[] args) {
        int number1=1983;
        int temp1=number1;
        int count=0;
//将数字的每一位写入数组
        while(number1!=0){
            number1=number1/10;
            count++;
        }
        int[] arr=new int[count];
        int index= arr.length-1;
        while (temp1!=0){
            int ge=temp1%10;
            temp1=temp1/10;
            arr[index]=ge;
            index--;
        }
//以下是加密过程
        for (int i = 0; i < arr.length; i++) {
            arr[i]=(arr[i]+5)%10;
        }
        for (int i = 0, j= arr.length-1; i < j; i++,j--) {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        int number=0;
        for (int i = 0; i < arr.length; i++) {
            number=number*10+arr[i];
        }
        System.out.println(number);
    }
}

//加密结果8346

7.数字解密

public class Test1 {
    public static void main(String[] args) {
        int number1=8346;
        int temp1=number1;
        int count=0;
//将数字分别写入数组
        while(number1!=0){
            number1=number1/10;
            count++;
        }
        int[] arr=new int[count];
        int index= arr.length-1;
        while (temp1!=0){
            int ge=temp1%10;
            temp1=temp1/10;
            arr[index]=ge;
            index--;
        }
//解密过程
        for (int i = 0, j= arr.length-1; i < j; i++,j--) {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
//此步骤加密是通过取余得到,解密就是0~4,需要+10,5~9不变
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>=0&&arr[i]<=4){
                arr[i]=arr[i]+10;
            }
        }
//拼接结果
        int number=0;
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]-5;
            number=number*10+arr[i];
        }
        System.out.print(number);
    }
}

8.抢红包

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

第一种:

import java.util.Random;

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        int[] arrNew = new int[arr.length];
        Random r=new Random();
//有5种奖金,所以抽5次
        for (int i = 0; i < 5; ) {
            int randomIndex= r.nextInt(arr.length);
            int price=arr[randomIndex];
            boolean flag=contains(arrNew,price);
//当方法contains返回false,说明arrNew里不存在抽取的奖金数,所以将其添加进去
            if(!flag){
                arrNew[i]=price;
                i++;
            }
        }
//打印结果
        for (int i = 0; i < arrNew.length; i++) {
            System.out.println(arrNew[i]);
        }
    }

//判断抽到的奖金数,是否存在于arrNew数组
    public static boolean contains(int[] arrNew, int price) {
        for (int i = 0; i < arrNew.length; i++) {
            if(arrNew[i]==price){
                return true;
            }
        }
        return false;
    }
}

第二种:

import java.util.Random;

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        Random r=new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomIndex=r.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[randomIndex];
            arr[randomIndex]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

9.模拟双色球

  • 投注号码由六个红球,一个蓝球号码组成。红球号码从1-33中选择,蓝球号码从1-16中选择。

 

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

public class Test1 {
    public static void main(String[] args) {
    //生成中奖号码
        int arrCreate[]=createNumber();
    //用户输入号码
        int arrUser[]=userInput();
    //校验号码
        int redcount=0;
        int bluecount=0;
    //校验红球个数
        for (int i = 0; i < arrCreate.length-1; i++) {
            for (int i1 = 0; i1 < arrUser.length-1; i1++) {
                if(arrCreate[i]==arrUser[i1]){
                        redcount++;
                        //如果找到了,后面的数字就没必要比较了,跳出这一层循环
                        break;
                }
            }
        }
//校验蓝球个数,并输出红球和蓝球正确个数
        if(arrCreate[arrCreate.length-1]==arrUser[arrUser.length-1]){
            bluecount++;
        }
        System.out.println("红球中奖"+redcount+"个");
        System.out.println("蓝球中奖"+bluecount+"个");
//中奖类型
        if(redcount==6&&bluecount==1){
            System.out.println("一等奖,最高1000万");
        }
        else if(redcount==6&&bluecount==0){
            System.out.println("二等奖,最高500万");
        }
        else if(redcount==5&&bluecount==1){
            System.out.println("三等奖,3000元");
        }
        else if(redcount==5&&bluecount==0||redcount==4&&bluecount==1){
            System.out.println("四等奖,200元");
        }
        else if(redcount==4&&bluecount==0||redcount==3&&bluecount==1){
            System.out.println("五等奖,10元");
        }
        else if(redcount==2&&bluecount==0||redcount==1&&bluecount==1||redcount==0&&bluecount==1){
            System.out.println("六等奖,5元");
        }
        else {
            System.out.println("谢谢参与");
        }

    }
//----------------------------------------------------------------------------
    public static int[] userInput(){
        int[]arr=new int[7];
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i <arr.length-2 ; ) {
            System.out.print("请输入第"+(i+1)+"个红球号码:");
            //输入号码后进行判断,数字范围是否正常,数字是否在数组中重复(调用contains)。
            int redNumber=sc.nextInt();
            if(redNumber>=1&&redNumber<=33){
                boolean flag=contains(arr,redNumber);
                if(!flag){
                    arr[i]=redNumber;
                    i++;
                }
                else {
                    System.out.println("数字重复");
                }
            }
            else {
                System.out.println("红球数字范围出错");
            }

        }
        while (true){
            System.out.print("请输入蓝球号码:");
            int blueNumber=sc.nextInt();
            if(blueNumber>=1&&blueNumber<=16){
                arr[arr.length-1]=blueNumber;
                break;
            }
            else {
                System.out.println("蓝球数字范围出错");
            }
        }
        return arr;
    }
    public static int[] createNumber(){
        int[]arr=new int[7];
        Random r=new Random();
        for (int i = 0; i < arr.length-1; ) {
            int redNumber=r.nextInt(33)+1;
            boolean flag=contains(arr,redNumber);
            if(!flag){
                arr[i]=redNumber;
                i++;
            }
        }
        arr[6]=r.nextInt(16)+1;
        return arr;
    }
    public static boolean contains(int[]arr,int redNumber){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==redNumber){
                return true;
            }
        }
        return false;
    }
}

10.二维数组

二维数组:数组中存数组 (数据分组管理)

 

 

 

 

练习: 二维数组练习

 

public class Test1 {
    public static void main(String[] args) {
        int[][] arr = {
                {22, 66, 44},
                {77, 33, 88},
                {25, 45, 65},
                {11, 66, 99},
        };
        int sum = 0;

        for (int i = 0; i < arr.length; i++) {
            int sumQuarter = 0;
            for (int j = 0; j < arr[i].length; j++) {
                sumQuarter = sumQuarter + arr[i][j];
            }
            System.out.println("第" + (i + 1) + "季度总营业额为:" + sumQuarter);
            sum = sum + sumQuarter;
        }
        System.out.println("全年总营业额为:" + sum);
    }
}

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

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

相关文章

推荐两个好用的虚拟机、SSH 终端开源工具(Virtual Box、WindTerm)

笔者最近因一些变故&#xff0c;加上阳了&#xff0c;停更了一段时间&#xff0c;并提前回老家过年了。因并没有带笔记本电脑回去&#xff0c;故在折腾了一番老家电脑后&#xff0c;选择拥抱开源&#xff0c;使用一些开源的工具&#xff0c;而非习惯的 VMware Workstation 和 S…

Python3,区区10行代码,批量把图片插入Excel指定单元格中,省下时间去烫头发。

这里写目录标题1、引言2、代码实战2.1 代码示例2.2 遇到问题及处理方案2.2.1 遇到问题2.2.2 解决方案3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 想请教你个问题。 小鱼&#xff1a;啥问题呢&#xff1f; 小屌丝&#xff1a;我想把图片插入到excel里面 小鱼&#xff…

AVS3变换之ISP和ISTS

ISP&#xff08;Implicit Selected Transform&#xff09;是AVS3中新增的针对intra块的变换工具&#xff0c;IST对intra块提供了两种可分离的变换核&#xff0c;编码器根据RDO选择最优的变换核&#xff0c;但是对于选中的变换核不在码流中传输其索引&#xff0c;而是将其索引隐…

今天给大家介绍一篇医院医疗管理系统的设计与实现(源码+论文)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

一、多环境配置 在工作中&#xff0c;对于开发环境、测试环境、生产环境的配置肯定都不相同&#xff0c;比如我们开发阶段会在自己的电脑上安装 mysql &#xff0c;连接自己电脑上的 mysql 即可&#xff0c;但是项目开发完毕后要上线就需要该配置&#xff0c;将环境的配置改为…

亚马逊云科技 2022 re:Invent 的几个关键词:数据、云原生端到端、安全

一转眼&#xff0c;又是一年。2022 年云计算行业重要的技术趋势和方向里&#xff0c;亚马逊云科技一年一度的 re:Invent 大会是不可或缺的一环。 今年已经是 re:Invent 大会连续举办的第十一年&#xff0c;和往年一样&#xff0c;亚马逊云科技将一年的重磅技术观察和实践干货悉…

【数据结构】单链表 — 纯C实现单链表

目录&#x1f48c;前言一、定义1.概念2.特点3.优点4.缺点5.结点定义接口实现创建链表结点创建单个结点创建链表打印链表测试创建功能尾插尾删尾部插入尾部删除尾插尾删测试头插头删头部插入头部删除头插头删测试pos位的插入删除查找pos位置在pos位置前插入在pos位置后插入删除p…

CUDA和Compute Capability

Compute Capability 参考 指示GPU硬件能够支持的特性&#xff0c;可以被应用参考哪些特性可以运行。 这里能够找到不同Compute Capability对应的硬件特性。比如我的笔记本搭载了一块Geforce830m&#xff0c;Compute Capability为5.0&#xff0c;硬件特性为 另外有关技术细节比…

面试官问我HTTP,我真的是

面试官&#xff1a;今天要不来聊聊HTTP吧&#xff1f; 候选者&#xff1a;嗯&#xff0c;HTTP「协议」是客户端和服务器「交互」的一种通迅的格式 候选者&#xff1a;所谓的「协议」实际上就是双方约定好的「格式」&#xff0c;让双方都能看得懂的东西而已 候选者&#xff1…

2023-01-02 Echarts学习笔记(一) 基础概念和应用示例:折线图

文章目录0.什么是Echarts?1.常见使用场景2.使用Echarts的基本步骤3.应用示例:做一个折线图4.参考资料0.什么是Echarts? ECharts.js是 百度出品的一个开源 Javascript 数据可视化库 一个使用 JavaScript 实现的开源可视化库&#xff0c; 可以流畅的运行在 PC 和移动设备上&a…

【数据结构】二叉树递归算法代码总结

文章目录一、内容介绍二、算法总结2.1 二叉树结构2.2 完整代码2.3 输出结果三、Reference四、总结一、内容介绍 上一年备考数据结构中自己整理并验证过的二叉树递归算法。包括&#xff1a; 1、二叉树的创建&#xff1b; 2、二叉树的先、中、后序的递归遍历&#xff1b; 3、输出…

[项目说明]-基于人工智能博弈树,极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。

个人选题项目 基于人工智能博弈树&#xff0c;极大极小(Minimax)搜索算法并使用Alpha-Beta剪枝算法优化实现的可人机博弈的AI智能五子棋游戏。 设计目标及主要内容 本系统是根据传统五子棋游戏的功能编写&#xff0c;其功能实现了基于AI人工智能算法实现智能的人机对弈五子棋…

Java jdk安装及环境配置

Java环境安装一、 jdk和jre的安装1、安装目录创建java文件夹2、java文件夹内创建jdk和jre3、解压下载好的jdk安装包二、环境变量的配置一、 jdk和jre的安装 首先下载jdk 1、安装目录创建java文件夹 2、java文件夹内创建jdk和jre 3、解压下载好的jdk安装包 双击运行解压的jdk …

Kali Linux中shutdown指令的用法3-2

2.4 屏蔽重启指令 -h参数表示屏蔽重启指令&#xff0c;使用如图6所示的指令&#xff0c;可以屏蔽reboot指令&#xff0c;该指令的作用为关闭&#xff08;poweroff&#xff09;系统。 图6 屏蔽重启指令 从图6中可以看出&#xff0c;-h屏蔽了--reboot。 需要注意的是&#xff…

关于OLTP 和OLAP 干货知识分享

OLTP 和 OLAP 这两个概念在十来年前、十几年前BI这个词还不是那么普及的时候&#xff0c;还经常放在一起做比较&#xff0c;现在已经很少再单独拿出来做对比了&#xff0c;但也总还是有人会问到&#xff0c;我在这里大概讲下两个概念的差别和联系。 什么是OLTP OLTP 英文全称…

81.Zabbix之Window服务器agent监控

Zabbix版本:6.2.3 1.官网上下载对应的agent Download Zabbix agents 我们下载Zabbix agent 2 2.配置Zabbix agent2 下载完成后,将压缩包复制到服务器,然后放在移至C盘目录下(其他目录也是可以的),然后进行解压。 3.修改配置文件 用文本编辑软件打开zabbix_agent2.c…

DC-4靶场练习

今天抽时间做了下DC-4的实验&#xff0c;整理了实验步骤&#xff0c;并提炼总结方法论。内网存活主机扫描命令nmap -sP 192.168.101.0/24 arp-scan -l以上IP地址使用排除法,最后得出192.168.101.79是靶机地址。探测目标开放的端口推荐masscannmap快速扫描&#xff1a;masscan -…

【谷粒商城基础篇】整合SpringCloud、SpringCloud alibaba

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念&#xff08;第一、二章&#xff09;基础环境搭建&#xff08;第三章&#xff09;整合SpringCloud整合SpringCloud、SpringCloud alibaba&#xff08;第四、五章&#xff09;前端知…

【ACWING】【4645选数异或】

给定一个长度为 n 的数列 A1,A2,,An 和一个非负整数 x&#xff0c;给定 m 次查询&#xff0c;每次询问能否从某个区间 [l,r] 中选择两个数使得他们的异或等于 x。 输入格式 输入的第一行包含三个整数 n,m,x。 第二行包含 n 个整数 A1,A2,,An。 接下来 m 行&#xff0c;每行包含…

单片机基础之初识串口

目录 一、初识串口 1、串口基本知识 2、串口的特点 3、了解下全双工和半双工的区别 二、关于串口的电器标准和协议 1、RS-232 2、RS-422 3、RS-485 三、关于串口的电平 1、RS232 电平 2、TTL电平 四、串口通信 1、串口接线方式 2、串口编程要素 3、波特率 4、编…