Java语法基础案例(二)

news2024/11/26 16:28:06

目录

案例六:抢红包

案例七:找素数

方法一:

方法二:

方法三:

案例八:实现双色球

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


案例六:抢红包

一个大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];//将对应索引的钱取出来
                //判断这个红包不为0
                if (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=200
        for (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=200
        for (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)+1
                    int 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.coloradmin.cn/o/1089392.html

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

相关文章

PyQt5 PyQt6 Designer 的安装

pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科学技术大学 http://pypi.mirrors.ustc.…

力扣164最大间距

1.前言 因为昨天写了一个基数排序&#xff0c;今天我来写一道用基数排序实现的题解&#xff0c;希望可以帮助你理解基数排序。 这个题本身不难&#xff0c;就是线性时间和线性额外空间(O(n))的算法&#xff0c;有点难实现 基数排序的时间复杂度是O(d*(nradix))&#xff0c;其中…

HTML图片标签(2) HTML5+CSS3+移动web 前端开发入门笔记(三)

图片标签 HTML中&#xff0c;可以使用标签来插入图片。具体的语法为&#xff1a; <img src"图片路径" alt"替代文本">其中&#xff0c;src属性用于指定图片的路径&#xff0c;可以是相对路径或绝对路径。常见的有相对当前HTML文件的路径&#xff0…

Golang 实现接口和继承

小猴子继承了老猴子&#xff0c;这样老猴子拥有的能力包括字段&#xff0c;方法就会自动的被老猴子继承。 小猴子不需要做任何处理就可以拿到老猴子的字段和它的方法&#xff0c;因为是继承关系。 但是小猴子还会其他的技能&#xff0c;比如还会像小鸟一样飞翔&#xff0c;希…

国际减灾日 | 智慧减灾——百分点科技的数据科学视角

国际减轻自然灾害日简称“国际减灾日”&#xff0c;由联合国于1989年设立&#xff0c;旨在关注全球灾害风险&#xff0c;呼吁各国政府、组织和个人积极参与减灾工作&#xff0c;以保护人民生命财产安全。今年10月13日是第34个国际减灾日&#xff0c;主题为“共同打造有韧性的未…

卫星影像如何插入到AutoCAD使用

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 第一步&#xff1a; 首先需要下载影像&#xff0c;选择一个区域下载&#xff0c;影像下载方式有以下几种&#xff1a; 那么通过下载方式选择好了范围以后&#xff0c;选…

【C++】-c++11的知识点(中)--lambda表达式,可变模板参数以及包装类(bind绑定)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

基于Labview的噪声采集分析系

目录 摘 要......................................................................................................................... 3 第一章 绪论.............................................................................................................…

印尼全面禁止直播带货

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 电商的改变要来了? 印尼为了保护中小企业全面禁止电商&#xff0c;原因是&#xff1a;电商富的是少数人&#xff0c;只有实体才能带动经济。另外除了印尼&#xff0c;马来西亚、越南也要审查直播…

html设置前端加载动画

主体思路参考&#xff1a; 前端实现页面加载动画_边城仔的博客-CSDN博客 JS图片显示与隐藏案例_js控制图片显示隐藏-CSDN博客 1、编写load.css /* 显示加载场景 */ .loadBackGround{position: absolute;top: 0px;text-align: center;width: 100%;height: 100vh;background-c…

十六、【橡皮擦工具组】

文章目录 橡皮擦背景橡皮擦1. 一次取样2. 连续取样3. 取样背景色板 魔术橡皮擦 橡皮擦 橡皮擦跟我们平常生活中所用的橡皮擦是一样&#xff0c;它是将图层的内容擦除,只剩下空白部分。另外当我们按住Alt的键去擦除空白部分的时候&#xff0c;也可以将背景的部分显示出来。 另…

第三章 内存管理 二、内存管理的概念

目录 一、内存空间的分配与回收 内存空间的分配: 内存空间的回收&#xff1a; 二、内存空间的扩充 四、存储保护 五、总结 一、内存空间的分配与回收 内存空间的分配和回收是程序设计中非常重要的一环。这里简要介绍下内存空间的分配和回收。 内存空间的分配: 静态分配…

JVM 性能调优参数

JVM分为堆内存和非堆内存 堆的内存分配用-Xms和-Xmx -Xms分配堆最小内存&#xff0c;默认为物理内存的1/64&#xff1b; -Xmx分配最大内存&#xff0c;默认为物理内存的1/4。 非堆内存分配用-XX:PermSize和-XX:MaxPermSize -XX:PermSize分配非堆最小内存&#xff0c;默认为物理…

LeetCode【46】全排列

题目&#xff1a; 代码&#xff1a; 在这里插入代码片

LeetCode刷题总结 - LeetCode 热题 100 - 持续更新

LeetCode 热题 100 其他系列哈希1. 两数之和49. 字母异位词分组128. 最长连续序列 双指针27. 移除元素283. 移动零11. 盛最多水的容器剑指 Offer II 007. 数组中和为 0 的三个数42. 接雨水 滑动窗口438. 找到字符串中所有字母异位词3. 无重复字符的最长子串 字串560. 和为 K 的…

十四、【图章工具组】

文章目录 仿制图章图案图章 仿制图章 纺织图和章工具跟我们之前所用到的修补工具类似,需要我们先按住Alt键选住一块区域&#xff0c;然后调整它的硬度在用我们选择的区域去覆盖&#xff0c;需要注意的是&#xff0c;我们去做的时候尽量一笔覆盖我们想要遮住的区域: 图案图章…

BUUCTF 你竟然赶我走 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件后有一张图片。 密文&#xff1a; 解题思路&#xff1a; 有两种解题方法 方法一&#xff1a; 1、使用StegSolve打开图片。 2、打开File Format&#xff08;文件格式&#xff09; 3、拉到最下面&#…

国外互联网巨头常用的项目管理工具揭秘

大型互联网公司有涉及多个团队和利益相关者的复杂项目。为了保持项目的组织性和效率&#xff0c;他们中的许多人依赖于项目管理工具。这些工具有助于跟踪任务&#xff0c;与团队成员沟通&#xff0c;并监控进度。让我们来看看一些大型互联网公司正在使用的项目管理工具。 1、Zo…

Flink之DataStream API开发Flink程序过程与Flink常见数据类型

开发Flink程序过程与Flink常见数据类型 DataStream APIFlink三层APIDataStream API概述 开发Flink程序过程添加依赖创建执行环境执行模式创建Data Source应用转换算子创建Data Sink触发程序执行示例 Flink常见数据类型基本数据类型字符串类型时间和日期类型数组类型元组类型列表…

【Java 进阶篇】深入了解JavaScript中的函数

函数是JavaScript编程中的核心概念之一。它们是可重用的代码块&#xff0c;可以帮助您组织和管理程序&#xff0c;使您的代码更具可读性和可维护性。在本篇博客中&#xff0c;我们将深入了解JavaScript中的函数&#xff0c;包括函数的基本语法、参数、返回值、作用域、闭包和高…