Java奠基】Java经典案例讲解
目录
卖飞机票
找质数
开发验证码
数组元素的复制
评委打分
数字加密
数字解密
抢红包
模拟双色球
二维数组
卖飞机票
需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:
旺季(5-10月)头等舱9折,经济舱8.5折;淡季(11月到来年4月)头等舱7折,经济舱6.5折。代码如下:
import java.util.Scanner;public class Main {public static void main(String[] args) {// 键盘录入机票原价、月份、头等舱或经济舱Scanner sc = new Scanner(System.in);System.out.println("请输入机票原价");int ticket = sc.nextInt();System.out.println("请输入月份");int month = sc.nextInt();System.out.println("请输入当前购买的舱位 0 头等舱 1 经济舱");int seat = sc.nextInt();// 判断月份是淡季还是旺季if(month >= 5 && month <= 10){ // 旺季ticket = getTicket(seat, ticket, 0.9, 0.85);}else if((month >=1 && month <= 4) || (month >= 11 && month <= 12)){ // 淡季ticket = getTicket(seat, ticket, 0.7, 0.65);}else{System.out.println("键盘录入不合法!");}System.out.println(ticket);}// 定义判断乘坐的是经济舱还是头等舱static int getTicket(int seat, int ticket, double x, double x1) {if (seat == 0) {ticket = (int) (ticket * x);} else if (seat == 1) {ticket = (int) (ticket * x1);} else {System.out.println("没有这个舱位!");}return ticket;}
}

找质数
需求:判断101 ~ 200 之间有多少个素数,并输出所有素数。代码如下:
public class Main {public static void main(String[] args) {// 统计素数的数量int count = 0;for (int i = 101; i <= 200 ; i++) {// 假设当前i为素数boolean flag = true;for (int j = 2; j < i ; j++) {if(i % j ==0){flag = false;break;}}if(flag){System.out.println("当前的素数为:"+i);count++;}}System.out.println("一共有素数"+count+"个");}
}

开发验证码
需求:定义方法实现随机产生一个5位的验证码,验证码格式为:长度为5、前四位是大写字母或者小写字母、最后一位是数字。代码如下:
public class Main {public static void main(String[] args) {// 大小写字母都放在数组中char[] chs = new char[52];for (int i = 0; i < chs.length; i++) {// 使用 ASCII码表if(i<=25){chs[i] = (char) (97 + i); // 添加小写字母}else{chs[i] = (char) (65 + i - 26); // 添加大写字母}}// 定义一个字符串类型用来记录最终结果String result = "";// 随机抽取四次字母Random r = new Random();for (int i = 0; i < 4; i++) {int randomIndex = r.nextInt(chs.length);// 利用随机索引获取对应元素result = result + chs[randomIndex];}// 随机抽取一个数字 0 ~ 9int number = r.nextInt(10);result = result + number;System.out.println("当前验证码为:"+result);}
}

数组元素的复制
需求:把一个数组中的元素复制到另一个新数组中去。代码如下:
public class Main {public static void main(String[] args) {// 定义一个旧数组用来存储数据int[] arr = {1,2,3,4,5};// 定义一个新数组,数组长度与旧数组长度一致int[] newarr = new int[arr.length];// 遍历旧数组,得到数组中的每一个元素依次放入到新数组当中for (int i = 0; i < arr.length; i++) {newarr[i] = arr[i];}// 打印新数组中的元素for (int i = 0; i < newarr.length; i++) {System.out.println(newarr[i]);}}
}

评委打分
需求:在唱歌比赛中,有6名评委给选手打分,分数范围是 [0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分的4个评委的平均分,请完成上述过程并计算选手的得分。代码如下:
public class Main {public static void main(String[] args) {// 定义一个数组,用来存储6名评委的打分(0 ~ 100)int[] scoreArr = getScore();for (int i = 1; i < scoreArr.length; i++) {System.out.println(scoreArr[i]);}// 求数组最大最小值int max = getMax(scoreArr);int min = getMin(scoreArr);// 求数组元素6个元素的总和int sum = getSum(scoreArr);// 当前的评分System.out.println("选手的最终评分为:"+(sum - max - min)/(scoreArr.length - 2));}// 获取数组元素总和public static int getSum(int[] scoreArr){int sum = 0;for (int i = 0; i < scoreArr.length; i++) {sum = sum + scoreArr[i];}return sum;}// 定义获取数组元素最大值的方法public static int getMax(int[] scoreArr){int max = scoreArr[0];for (int i = 1; i < scoreArr.length; i++) {if(max>scoreArr[i]){max = scoreArr[i];}}return max;}// 定义获取数组元素最小值的方法public static int getMin(int[] scoreArr){int min = scoreArr[0];for (int i = 0; i < scoreArr.length; i++) {if(min<scoreArr[i]){min = scoreArr[i];}}return min;}// 定义获取评委打分的方法public static int[] getScore(){// 定义数组int[] scores = new int[6];// 使用键盘录入的方式,输入分数:0~100Scanner sc = new Scanner(System.in);for (int i = 0; i < scores.length;) {System.out.println("请输入评委的打分:");int score = sc.nextInt();if(score >=0 && score <= 100){scores[i] = score;i++;}else {System.out.println("成绩超出了范围,请继续录入!");}}return scores;}
}

数字加密
需求:某系统的数字密码(大于0),比如1983,采用加密方式进行传输。规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数,比如1983加密之后变成8346。代码如下:
public class Main {public static void main(String[] args) {// 把整数里面的每一位放在数组当中int[] arr = { 1,9,8,3 };// 对数组上的每一位元素加5for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] + 5;}// 将数组的每一位元素进行10取余for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] % 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解密成1983,代码如下:
public class Main {public static void main(String[] args) {// 把整数里面的每一位放在数组当中int[] arr = { 8,3,4,6 };// 反转for (int i = 0, j = arr.length-1; i < j; i++,j--) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}// 由于加密是对10进行取余方式获取的,在解密的时候需要判断,0~4之间+10 4~9不变for (int i = 0; i < arr.length; i++) {if(arr[i]>0 && arr[i]<=4){arr[i] = arr[i] + 10;}}// 数组每一位元素减5for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] - 5;}// 获取数组每一位元素拼接成最终结果int number = 0;for (int i = 0; i < arr.length; i++) {number = number * 10 + arr[i];}System.out.println(number);}
}

抢红包
需求:一个大V直播抽奖,奖品是现金红包,分别有{ 2,588,888,1000,10000 }五个奖金,请使用代码模拟抽奖,打印出每个奖项,奖项出现的顺序要随机且不能重复,代码如下:
public class Main {public static void main(String[] args) {// 定义一个奖池数组int[] arr = { 2,588,888,1000,10000 };// 定义新数组用于存储抽奖的结果int[] newArr = new int[arr.length];// 抽奖Random r = new Random();for (int i = 0; i < 5;) {// 获取随机索引int randomIndex = r.nextInt(arr.length);// 获取奖项int prize = arr[randomIndex];// 判断当前的奖项是否存在,如果存在则重新抽取,如果不存在,就表示是有效奖项boolean flag = contains(newArr,prize);if(!flag){// 把当前抽取到的奖项添加到newArr当中newArr[i] = prize;// 添加完毕移动索引i++;}}// 遍历newArrfor (int i = 0; i < newArr.length; i++) {System.out.println(newArr[i]);}}// 判断prize在数组中是否存在public static boolean contains(int[] arr,int prize){for (int i = 0; i < arr.length; i++) {if(arr[i] == prize){return true;}}return false;}
}

模拟双色球
需求:投注号码由6个红色球号和1个蓝色球号组成。红色球号码从 1 ~ 33 中选择;蓝色球号码从 1 ~ 16 中选择。代码如下:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 生成中将代码int[] arr = createNumber();System.out.println("当前中将代码为"+ Arrays.toString(arr) + "请仿照中将代码输入,才能中将(doge)");// 用户输入的号码int[] userInputArr = InputNum();// 判断用户的中将情况int redCount = 0;int blueCount = 0;// 判断红球for (int i = 0; i < userInputArr.length - 1; i++) {int reqNumber= userInputArr[i];for (int j = 0; j < arr.length -1; j++) {if(reqNumber == arr[j]){redCount++;// 如果找到了,那么后面的数字就没有必要继续比较了,跳出内循环,继续判断下一个红球号码是否中将。break;}}}// 判断蓝球int blueNumber = userInputArr[userInputArr.length -1];if(blueNumber == arr[arr.length -1]){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 ==1) || (redCount ==1 && blueCount ==1) || (redCount ==0 && blueCount ==1)) {System.out.println("恭喜你,中将5!");}else {System.out.println("谢谢参与,谢谢惠顾!");}}public static int[] InputNum(){// 创建数组用于添加用户购买的彩票数量int[] arr = new int[7];// 利用键盘录入让用户进行输入Scanner sc = new Scanner(System.in);// 让用户输入红色球for (int i = 0; i < 6;) {System.out.println("请输入第" + (i + 1) + "个红色号码");int reqNumber = sc.nextInt();// reqNumber 在 1~33 唯一不重复if(reqNumber >= 1 && reqNumber <= 33){boolean flag = contains(arr,reqNumber);if(!flag){// 不存在的,有效的可以存在数组当中arr[i] = reqNumber;i++;}else{// 存在System.out.println("当前的红色号码球已经存在,请重新输入!");}}else {System.out.println("当前的红色号码超出范围,请重新输入!");}}// 让用户输入蓝色球System.out.println("请输入蓝色球");// 1~16while (true){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(){// 创建数组用于添加中将号码,6个红球、1蓝球,数组长度为7int[] arr = new int[7];// 随机生成号码并添加到数组中Random r = new Random();for (int i = 0; i < 6;) {// 获取红球号码int redNumber = r.nextInt(33) + 1;boolean flag = contains(arr,redNumber);if(!flag){// 把红球号码添加到数组当中arr[i] = redNumber;i++;}}// 生成蓝球号码并添加到数组当中int blueNumber = r.nextInt(16) + 1;arr[arr.length - 1] = blueNumber;return arr;}// 用于判断数组在数组中是否存在public static boolean contains(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if(arr[i] == number){return true;}}return false;}
}

PS:赌博有风险,入行需谨慎!根据上面的赌球代码,我测试了好几次连5元都没中。希望大家玩乐适度为主,切莫上头!
二维数组
需求:某商城每个季度的营业额如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
要求计算出每个季度的总营业额和全年的总营业额:代码如下:
public class Main {public static void main(String[] args) {// 创建二维数组并存储数据int[][] yearArrArr = {{22, 66, 44},{77, 33, 88},{25, 45, 65},{11, 66, 99}};// 全年的营业额int yearSum = 0;// 遍历二维数组,得到每一个一维数组并求和for (int i = 0; i < yearArrArr.length; i++) {int[] quarterArr = yearArrArr[i];int sum = getSum(quarterArr);System.out.println("第" + (i+1) + "个季度的总营业额为:" + sum);yearSum = yearSum + sum;}System.out.println("全年的总营业额为:"+yearSum);}// 定义一个方法,计算每一个季度的营业额public static int getSum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum = sum + arr[i];}return sum;}
}

相关文章:
Java奠基】Java经典案例讲解
目录 卖飞机票 找质数 开发验证码 数组元素的复制 评委打分 数字加密 数字解密 抢红包 模拟双色球 二维数组 卖飞机票 需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格: 旺季&…...
新闻文本分类任务:使用Transformer实现
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
如何在 Vue 中使用 防抖 和 节流
大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库 https://mp.weixin.qq.com/s?__bizMzU5NzA0NzQyNg&mid2247485824&idx3&sn70cd26a7c0c683de64802f6cb9835003&scene21#wech…...
美国Linux服务器系统增强安全的配置
美国Linux服务器系统可能出现的安全漏洞中,更多是由于不当的系统配置所造成的,用户们可以通过一些适当的安全配置来防止问题的发生。美国Linux服务器系统上运行的服务越多,不当配置的概率也就越高,那么系统出现安全问题的可能性也…...
【史上最全面esp32教程】oled显示篇
文章目录前言介绍及库下载基础使用引脚的连接使用函数总结前言 本节课主要讲的是OLED的基础使用。使用的oled为0.96寸,128*64。 大家的其他型号也是可以用的。 提示:以下是本篇文章正文内容,下面案例可供参考 介绍及库下载 oled的简介&…...
第十四届蓝桥杯三月真题刷题训练——第 21 天
目录 第 1 题:灭鼠先锋 问题描述 运行限制 代码: 思路: 第 2 题:小蓝与钥匙 问题描述 答案提交 运行限制 代码: 思路 : 第 3 题:李白打酒加强版 第 4 题:机房 第 1 题࿱…...
css绘制一个Pinia小菠萝
效果如下: pinia小菠萝分为头部和身体,头部三片叶子,菠萝为身体 头部 先绘制头部的盒子,将三片叶子至于头部盒子中 先绘制中间的叶子,利用border-radius实现叶子的效果,可以借助工具来快速实现圆角的预想…...
OpenCV入门(二十)快速学会OpenCV 19 对象测量
OpenCV入门(二十)快速学会OpenCV 19 对象测量1.对象测量2.多边形拟合3.计算对象中心作者:Xiou 1.对象测量 opencv 中对象测量包括: 如面积,周长,质心,边界框等。 弧长与面积测量; …...
TCP和UDP协议的区别?
是否面向连接: TCP 是面向连接的传输,UDP 是面向无连接的传输。 是否是可靠传输:TCP是可靠的传输服务,在传递数据之前,会有三次握手来建立连接;在数据传递时,有确认、窗口、重传、拥塞控制机制…...
【C语言蓝桥杯每日一题】——排序
【C语言蓝桥杯每日一题】—— 排序😎前言🙌排序🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介&am…...
学校官网的制作
学校官网 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}.top{background-color: #3D3BB8;width: 100%;position: fixed;padding: 20px 0 12px 0;}.box{width…...
【云原生】k8s集群命令行工具kubectl之故障排除和调试命令
kubectl之故障排除和调试命令一、describe二、logs三、attach四、exec五、port-forward六、proxy七、cp八、debug8.1、案例1:共享进程空间8.2、案例2:更改启动命令、容器镜像8.3、案例3:调试节点8.4、其他一、describe 显示某个资源或某组资…...
AJAX,Axios,JSON简单了解
一. AJAX简介概念: AJAX(Asynchronous JavaScript And XML): 异步的JavaScript 和XMLAJAX作用:1.与服务器进行数据交换: 通过AJAX可以给服务器发送请求,并获取服务器响应的数据使用了AJAX和服务器进行通信,就可以使用 HTMLAJAX来替换JSP页面了2.异步交互…...
私域流量该如何打造?这套模式直接借鉴
梦龙商业案例分析,带你了解商业背后的秘密 古往今来,消费方与购买方的地位似乎就没有变过,消费者始终是处在被动接受的地位。 但到了现在,其实消费地位早已经不知不觉产生了改变。 就比如以前都是厂家有什么消费者买什么&#…...
【jenkins部署】一文弄懂自动打包部署(前后台)
这里写目录标题序言软件安装jdkmaven配置maven阿里镜像以及本地库位置git安装安装jenkins插件安装环境配置创建项目配置gitee生成gitee WebHookmaven打包验证是否打包成功连接远程服务器并重启服务远程服务器生成私钥配置ssh项目配置ssh脚本vue项目打包nodejs安装下载配置环境变…...
应届生投腾讯,被面试官问了8个和 ThreadLocal 相关的问题。
问:谈一谈ThreadLocal的结构。 ThreadLocal内部维护了一个ThreadLocalMap静态内部类,ThreadLocalMap中又维护了一个Entry静态内部类,和Entry数组。 Entry类继承弱引用类WeakReference,Entry类有一个有参构造函数,参数…...
Linux命令scp用法
本文主要讲的是scp用法如果哪里不对欢迎指出,主页https://blog.csdn.net/qq_57785602?typeblogscp 可以在win系统使用,本文百分之八十写的是win系统怎么使用,在本地上到服务器文件,从服务器下载文件到本地用工具连接到公司服务器时ÿ…...
数据质量怎么监控
目录 一、任务基线级别 二、任务级别 & 表级别 三、字段级别 1. 对指标字段的监控 2. 对维度字段的监控 四、报表级别监控 五、总结 跑了几场面试,数据质量怎么监控是经常被问到的问题,仅次于自我介绍。 因为数据行业发展了几年,数…...
.NET Core 实现Excel的导入导出
.NET Core 使用NPOI实现Excel的导入导出前言NPOI简介一、安装相对应的程序包1.1、在 “管理NuGet程序包” 中的浏览搜索:“NPOI”二、新建Excel帮助类三、调用3.1、增加一个“keywords”模型类,用作导出3.2、添加一个控制器3.3、编写导入导出的控制器代码…...
排好队,一个一个来:宫本武藏教你学队列(附各种队列源码)
文章目录前言:理解“队列”的正确姿势一个关于队列的小思考——请求处理队列的两大“护法”————顺序队列和链式队列数组实现的队列链表实现的队列循环队列关于开篇,你明白了吗?最后说一句前言: 哈喽!欢迎来到黑洞晓…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
