Java语法基础案例(二)

目录

案例六:抢红包

案例七:找素数

方法一:

方法二:

方法三:

案例八:实现双色球

关于本项目所用所有方法的解释:


案例六:抢红包

一个大V直播时发起了抢红包活动,分别有: 9、666、 188、520、 99999五个红包。请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一-次,先抽或后抽哪一个红包是随机的。

方法:写个for循环控制抽奖5次,每次抽奖,都从数组中随机找出一个金额,如果该金额不是0,则代表抽中,接着用0替换该位置处的金额,然后继续下一个粉丝的抽奖;如果抽中的金额发现是0,代表该位置处的红包之前被别人抽走了,则从新从数组中随机找出一个金额,继续判断!直至抽中的金额不是0!

代码:

package com.itheima;import java.util.Random;
import java.util.Scanner;public class Test6 {public static void main(String[] args) {int[] moneys={9,66,188,520,99999};start(moneys);}public static void start(int[] moneys){//假设money=[9,66,188,520,99999]Scanner sc=new Scanner(System.in);Random r=new Random();//随机数对象//定义一个for循环,控制抽奖五次for (int i = 1; i <= 5; i++) {System.out.println("请您输入任意内容进行抽奖");sc.next();//等待用户输入内容,回车才往下走//为当前粉丝随机一个红包出来while (true) {//除非抽到不等于0的红包,否则一直抽int index = r.nextInt(moneys.length);//获得0-4的随机索引int money = moneys[index];//将对应索引的钱取出来//判断这个红包不为0if (money != 0) {System.out.println("恭喜您,您抽中了红包:" + money + "元");moneys[index] = 0;break;//结束这次抽奖}}}System.out.println("活动结束");}
}

 

案例七:找素数

素数:除了1和它本身,不能被其他正整数整除就叫素数,比如3,7就是素数,9,21不是素数

方法一:

方法内部的实现逻辑:使用for循环来产生如101到200之间的每个数;每拿到一个数,判断该数是否是素数;判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;根据判定的结果来决定是否输出这个数据( 是素数则输出) ;最后还需要统计素数的个数并返回。

代码:

package com.itheima;public class Test7 {public static void main(String[] args) {System.out.println("当前素数的个数是"+search(101, 200));}public static int search(int start, int end) {int count = 0;//假设start=101 end=200for (int i = start; i <= end; i++) {boolean flag = true;for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {flag = false;break;}}if (flag) {System.out.println(i);count++;}}return count;}}

方法二:

每当i%j==0时,这个数就已经不是素数了,没有向下循环的必要,而break和continue只能结束当前循环,所以我们需要为外部循环指定一个标签,从而直接跳出外部循环进行下一个数字的判断

代码

package com.itheima;public class Test7 {public static void main(String[] args) {System.out.println("当前素数的个数是"+search(101, 200));}public static int search(int start, int end) {int count = 0;Out://为外部循环指定标签//假设start=101 end=200for (int i = start; i <= end; i++) {for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {continue Out;//直接跳出外部循环}}count++;System.out.println(i);}return count;}}

 

方法三:

直接将判断素数的过程定义为一个方法,通过判断方法是否true来输出素数并计数

package com.itheima;public class Test7 {public static void main(String[] args) {System.out.println("当前素数的个数是"+search(101, 200));}public static int search(int start, int end) {int count=0;for (int i = start; i <=end ; i++) {if (check(i)){System.out.println(i);count++;}}return count;}public static boolean check(int data){for (int i = 2; i <data ; i++) {if (data%i==0){return false;}}return true;}}

 

案例八:实现双色球

模拟双色球:业务分析,用户投注一组号码

 

设计步骤:

1.让用户投注一组号码,并返回用户投注的号码

2.系统随机一组中奖号码,并返回这组中奖号码

3.传入两组号码,用来判断用户投注号码的中奖情况,并输出

代码:

package com.itheima;import java.util.Random;
import java.util.Scanner;public class Test8 {public static void main(String[] args) {int[] userNumbers=userSelectNumbers();System.out.println("您投注的号码:");printArray(userNumbers);int[] luckNumbers=createLuckNumbers();System.out.println("中奖的号码:");printArray(luckNumbers);judge(userNumbers,luckNumbers);}public static void printArray(int[] arr){//输出数组System.out.print("[");for (int i = 0; i < arr.length; i++) {System.out.print(i==arr.length-1?arr[i]:arr[i]+",");//判断循环已经到达数组的最后一个位置,如果到达则直接打印数组中的数,如果没到则打印的数字后加一个逗号}System.out.println("]");}public static int[] userSelectNumbers() {//此方法用于让用户投注一组号码并返回int[] numbers = new int[7];//前六个是红球最后一个是蓝球Scanner sc = new Scanner(System.in);for (int i = 0; i < numbers.length - 1; i++) {while (true) {System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33之间,不难重复)");int number = sc.nextInt();if (number < 1 || number > 33) {//判断号码是否在1-33之间System.out.println("对不起,您输入的红球号码不在1-33之间,请确认!");} else {if (exist(numbers, number)) {//判断号码是否重复System.out.println("对不起,您当前输入的红球号码与前面的号码重复了,请确认!");} else {numbers[i] = number;break;//结束当前死循环}}}}//投注最后一个蓝球号码while (true) {System.out.println("请您输入最后一个蓝球号码(1-16)");int number = sc.nextInt();if (number < 1 || number > 16) {System.out.println("对不起,您输入的蓝球号码范围不对哦!");} else {numbers[6] = number;break;//蓝球号码录入成功,结束死循环}}return numbers;}public static boolean exist(int[] numbers, int number) {//判断number这个数字是否在numbers这个数组中存在,也就是判断输入的数字是否重复for (int i = 0; i < numbers.length; i++) {if (numbers[i]==0){break;}if (numbers[i] == number) {return true;}}return false;}public static int[] createLuckNumbers(){//随机中奖号码int[] numbers=new int[7];Random r=new Random();for (int i = 0; i < numbers.length-1; i++)while (true) {{//为当前位置随机一个红球号码存入 1-33==>-1==>(0-32)+1int number=r.nextInt(33)+1;//判断这个号码是否之前出现过(红球号码不难重复)if (!exist(numbers,number)){numbers[i]=number;break;//结束死循环}}}//随机一个蓝球号码numbers[6]=r.nextInt(16)+1;return numbers;}public static void judge(int[] userNumbers,int[] luckNumbers){//判断用户的中奖情况//分别定义2个变量用于记住红球命中了几个以及蓝球命中了几个int redBall=0;int blueBall=0;//先判断红球命中的数量for (int i = 0; i < userNumbers.length-1; i++) {for (int j = 0; j < luckNumbers.length-1; j++) {if (userNumbers[i]==luckNumbers[j]){redBall++;break;}}}//判断蓝球是否命中blueBall=userNumbers[6]==luckNumbers[6]?1:0;System.out.println("您命中的红球数量是:"+redBall+"个");System.out.println("您命中的蓝球数量是:"+blueBall+"个");if (redBall==6&&blueBall==1){System.out.println("恭喜您,中奖1000万,不用当程序员了");}else if (redBall==6&&blueBall==0){System.out.println("恭喜您,中奖500万,不用担心裁员了");}else if (redBall==5&&blueBall==1){System.out.println("恭喜您,中奖3000元,可以出去吃顿小龙虾了");}else if (redBall==5&&blueBall==0||redBall==4&&blueBall==1){System.out.println("恭喜您中奖200元");}else if (redBall==4&&blueBall==0||redBall==3&&blueBall==1){System.out.println("中了10元");}else if (redBall==3&&blueBall==1){System.out.println("中了5元");}else {System.out.println("谢谢惠顾~");}}
}

 

关于本项目所用所有方法的解释:

public static void printArray(int[] arr){:输出数组

通过遍历数组输出数组,需要注意的点是判断输出的数字是否已经到达了数组的最后一个位置,如果是则不需要加逗号了

public static int[] userSelectNumbers():使用户输入号码

此方法用于让用户投注一组号码并返回,红球与蓝球分开输入,红球要6个,在数组的位置是numbers.length - 1及之前的,需要注意判断输入的数字是否在1-33之间已经是否重复,符合要求就存入数组,蓝球则直接定位到数组下标为6的地方,其余注意的地方与红球相同,特别要注意这里所用的死循环的秒处

public static boolean exist(int[] numbers, int number):判断重复

判断number这个数字是否在numbers这个数组中存在,也就是判断输入的数字是否重复,其中

if (numbers[i]==0){break;
}

 的应用使代码更加简洁,减去了多余的无用的运行

public static int[] createLuckNumbers():随机中奖号码,与用户输入时类似,唯一需要注意的是以为想让系统随机1-33之间的数,所以用到了减加法,1-33==>-1>==>(0-32)+1

r.nextInt(33)+1;即可随机1-33之间的数字

r.nextInt(16)+1;即可随机1-16之间的数字

public static void judge(int[] userNumbers,int[] luckNumbers):判断用户的中奖情况,使用嵌套循环数组遍历判断红球的命中情况,对于判断奖项问题只是纯粹的if...else if问题。

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

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

相关文章

2023年中国固废处理行业研究报告

第一章 行业概况 1.1 定义 固体废物处理是一个日益重要的领域&#xff0c;随着中国城市化进程的加速和工业产值的持续增长&#xff0c;固体废物的产生量也在不断上升。根据《固体废物污染环境防治法》的定义&#xff0c;固体废物包括了人类在生产、生活和其他活动中产生的固态…

AI低代码维格云甘特视图怎么用?

甘特视图,以日期为横轴展示任务持续时长和先后顺序,简称甘特图。 项目管理过程中,合理分配任务和资源至关重要,使用甘特图,妥当解决以下场景: 想知道整个项目的周期多长,哪些任务对项目的周期影响最大; 想知道每个任务的时间有多长,任务的优先级和依赖关系是什么; 想…

基于深度学习的“语义通信编解码技术”框架分类

目录 基于神经网络的语义提取基于神经网络的语义信源编码基于神经网络的语义信源信道联合编码基于神经网络的语义编码与数字调制联合设计参考文献 基于神经网络的语义提取 在现有的信源编码前端加上一个语义提取神经网络[53] &#xff0c;如图所示。语义提取神经网络的输入是原…

接口自动化测试框架搭建【附教程加源码】

1 接口测试 接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说&#xff0c;属于更底层的测试&#xff0c;这样带来的好处就是测试收益更大&#xff…

【TensorFlow2 之015】 在 TF 2.0 中实现 AlexNet

一、说明 在这篇文章中&#xff0c;我们将展示如何在 TensorFlow 2.0 中实现基本的卷积神经网络 \(AlexNet\)。AlexNet 架构由 Alex Krizhevsky 设计&#xff0c;并与 Ilya Sutskever 和 Geoffrey Hinton 一起发布。并获得Image Net2012竞赛中冠军。 教程概述&#xff1a; 理论…

OpenCV实现答题卡自动打分!

目录 1&#xff0c;主要原理以及函数介绍 全部代码&#xff0c;以 2 &#xff0c; 实现过程 3&#xff0c;结果展示 1&#xff0c;主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象&#xff0c;并将其赋值给变量ap。这个对象可以接受我们的脚…

gitbook使用

文章目录 前言一、安裝Node.js&#xff1a;二、安裝GitBook&#xff1a;編輯和創建內容&#xff1a;安装typora 前言 ubuntu20.04系统 一、安裝Node.js&#xff1a; 打開終端機&#xff08;Terminal&#xff09;。 使用以下命令來安裝Node.js和npm&#xff08;Node.js的包管…

Vulnhub系列靶机---Raven: 2

文章目录 信息收集主机发现端口扫描目录扫描用户枚举 漏洞发现漏洞利用UDF脚本MySQL提权SUID提权 靶机文档&#xff1a;Raven: 2 下载地址&#xff1a;Download (Mirror) 信息收集 靶机MAC地址&#xff1a;00:0C:29:15:7F:17 主机发现 sudo nmap -sn 192.168.8.0/24sudo arp…

攻防世界题目练习——Web引导模式(二)

题目目录 1. Web_php_unserialize2. supersqli3. web24. NewsCenter5. Web_python_template_injection6. catcat-new 1. Web_php_unserialize 题目源码&#xff1a; <?php class Demo { private $file index.php;public function __construct($file) { $this->file …

FPGA project : flash_read

实验目标&#xff1a; flash的普通读指令&#xff0c;在指定地址开始读。可以更改地址与读的数据个数。 先发送读指令扇区地址页地址字节地址。 然后读数据。再把读到的串行数据转化为8bit的数据&#xff0c;存入fifo。 然后读出FIFO中数据&#xff0c;通过uart_tx模块发送…

Redis分布式锁最牛逼的实现(Java 版,最牛逼的实现方式)

写在前面的话 分布式锁一般有三种实现方式&#xff1a;1. 数据库乐观锁&#xff1b;2. 基于Redis的分布式锁&#xff1b;3. 基于ZooKeeper的分布式锁。 本篇博客将介绍第二种方式&#xff0c;基于Redis实现分布式锁。 为什么需要分布式锁&#xff1f; 在单机环境下编写多线…

【使用 TensorFlow 2】03/3 创建自定义损失函数

一、说明 TensorFlow 2发布已经接近5年时间&#xff0c;不仅继承了Keras快速上手和易于使用的特性&#xff0c;同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则&#xff1a;简化概念&#xff0c;海纳百川&#xff0c;构建生态.这是本系列的第三部分&#xff0c;…

Python数据挖掘项目实战——自动售货机销售数据分析

摘要&#xff1a;本案例将主要结合自动售货机的实际情况&#xff0c;对销售的历史数据进行处理&#xff0c;利用pyecharts库、Matplotlib库进行可视化分析&#xff0c;并对未来4周商品的销售额进行预测&#xff0c;从而为企业制定相应的自动售货机市场需求分析及销售建议提供参…

2、vscode c++ 项目配置调试及运行

文章目录 1、项目布局2、多项目管理2.1 先是一个总的CMakeLists.txt2.2 每个项目2.3 多版本OPENCV 3、调试和运行 接上一篇文章&#xff0c;vscode和cmake的c环境配置好以后&#xff0c;我们要写项目&#xff0c;再写对应的CMakeLists.txt 1、项目布局 . ├── bin ├── bu…

jmeter实现webservice接口测试

其实可以用jmeter两种sampler进行webservice的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…

怎么修改linux的root@后面的名称

文章目录 场景.登录服务器,root后面的名称是随机的,想自定义名称建议,直接使用命令执行需要重启机子 场景.登录服务器,root后面的名称是随机的,想自定义名称 建议,直接使用命令执行 hostnamectl set-hostname rdd-test重新连接即可生效,实际也是修改了/etc/hostname名称 需要…

十三、前端开发知识快速入门

目录 一、HTML概述和基本结构1.1 概述1.2 基本结构1.3 html文档类型1.4 html注释 二、HTML常用标签2.1 块标签2.2 行内标签2.3 字符实体2.4 图片标签2.5 链接标签2.6 列表标签2.7 表单2.8 表格 三、页面布局四、CSS样式4.1 基本语法和页面引用4.2 文本样式设置4.3 颜色表示法4.…

中国陆地生态系统服务价值空间分布数据集

简介&#xff1a; 中国陆地生态系统服务价值空间分布产品是以全国陆地生态系统类型遥感分类为基础&#xff0c;生态系统类型包括&#xff1a;旱地、农田、针叶林、针阔混交林、阔叶林、灌木林、草原、灌草丛、草甸、湿地、荒漠、裸地、水系、冰川积雪、人工表面&#xff08;包…

B端产品需求分析的思路和方法 4大方面

需求分析对产品成功和客户满意度至关重要&#xff0c;它帮助团队深入了解用户需求&#xff0c;优化用户体验&#xff0c;减少开发中的需求变更&#xff0c;降低开发风险。如果缺乏产品分析&#xff0c;容易造成产品定位不准确&#xff0c;用户体验不佳&#xff0c;不能满足用户…

迷你Ceph集群搭建(超低配设备)

我的博客原文链接&#xff1a;https://blog.gcc.ac.cn/post/2023/%E8%BF%B7%E4%BD%A0ceph%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/ 环境 机器列表&#xff1a; IP角色说明10.0.0.15osdARMv7&#xff0c;512M内存&#xff0c;32G存储&#xff0c;百兆网口10.0.0.16clientARM64…