做网站站长先把作息和身体搞好,公司页面,如何自己搭建一个个人网站,seo信息查询目录 案例六#xff1a;抢红包
案例七#xff1a;找素数
方法一#xff1a;
方法二#xff1a;
方法三#xff1a;
案例八#xff1a;实现双色球
关于本项目所用所有方法的解释#xff1a; 案例六#xff1a;抢红包
一个大V直播时发起了抢红包活动#xff0c;分…目录 案例六抢红包
案例七找素数
方法一
方法二
方法三
案例八实现双色球
关于本项目所用所有方法的解释 案例六抢红包
一个大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 scnew Scanner(System.in);Random rnew 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和它本身不能被其他正整数整除就叫素数比如37就是素数921不是素数
方法一
方法内部的实现逻辑:使用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;//假设start101 end200for (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%j0时这个数就已经不是素数了没有向下循环的必要而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://为外部循环指定标签//假设start101 end200for (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 count0;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%i0){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[] userNumbersuserSelectNumbers();System.out.println(您投注的号码);printArray(userNumbers);int[] luckNumberscreateLuckNumbers();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(iarr.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[] numbersnew int[7];Random rnew Random();for (int i 0; i numbers.length-1; i)while (true) {{//为当前位置随机一个红球号码存入 1-33-1(0-32)1int numberr.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 redBall0;int blueBall0;//先判断红球命中的数量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;}}}//判断蓝球是否命中blueBalluserNumbers[6]luckNumbers[6]?1:0;System.out.println(您命中的红球数量是redBall个);System.out.println(您命中的蓝球数量是blueBall个);if (redBall6blueBall1){System.out.println(恭喜您中奖1000万不用当程序员了);}else if (redBall6blueBall0){System.out.println(恭喜您中奖500万不用担心裁员了);}else if (redBall5blueBall1){System.out.println(恭喜您中奖3000元可以出去吃顿小龙虾了);}else if (redBall5blueBall0||redBall4blueBall1){System.out.println(恭喜您中奖200元);}else if (redBall4blueBall0||redBall3blueBall1){System.out.println(中了10元);}else if (redBall3blueBall1){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问题。