Java学习第05天-编程思维与编程能力

文章目录

  • 综合应用
    • 案例:找素数
    • 数组元素的复制
    • 数字加密
    • 模拟双色球

综合应用

涉及的知识点:

  1. 变量、数组
  2. 运算符:基本运算符、关系运算符、逻辑运算符
  3. 流程控制:if、switch、for、while、死循环、循环嵌套
  4. 跳转关键字:break、continue、return
  5. 方法
  6. ……

案例:找素数

需求:判断101-200之间有多少个素数,并输出所有素数

public class Case1 {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i < 200; i += 2) {
            boolean flag = true;
            double range = Math.sqrt(i);
            for (int j = 2; j < range; j++) {
                if (i % j == 0) {
                    flag = false;
                }
            }
            if (flag) {
                count++;
                System.out.print(i + "\t");
            }
        }
        System.out.println("101-200之间一共有" + count + "个素数");
    }
}

数组元素的复制

把一个数组中的元素复制到另一个新数组中去

public class Case2 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 44, 55, 66};
        int[] arr2 = arrayCopy(arr);
        printArray(arr);
        printArray(arr2);
    }

    public static void printArray(int[] arr) {
        if (arr == null || arr.length == 0) {
            System.out.println("[ ]");
            return;
        }

        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[] arrayCopy(int[] arr) {
        if (arr == null) return null;
        if (arr.length == 0) return new int[0];

        int[] arrCopy = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arrCopy[i] = arr[i];
        }
        return arrCopy;
    }
}

数字加密

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

public class Case3 {
    public static void main(String[] args) {
        int[] arr = {8, 4, 7, 9};

        encryptString(arr);  // 加密
        Case2.printArray(arr);

        encryptString(arr);  // 解密
        Case2.printArray(arr);
    }

    public static void encryptString(int[] plaintext) {
        for (int i = 0; i < plaintext.length; i++) {
            plaintext[i] = (plaintext[i] + 5) % 10;
        }

        for (int i = 0, j = plaintext.length - 1; i < j; i++, j--) {
            int temp = plaintext[i];
            plaintext[i] = plaintext[j];
            plaintext[j] = temp;
        }
    }
}

模拟双色球

规则:

  1. “双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1–33中选择;蓝色球号码从1–16中选择。
  2. 在这里插入图片描述
import java.util.Random;
import java.util.Scanner;

public class Case4 {
    public static void main(String[] args) {
        int[] luckNumber = generateNumber();
        Case2.printArray(luckNumber);
        int[] userInput = customerInput();
        check(userInput, luckNumber);
    }

    public static int[] generateNumber() {
        int[] arr = new int[7];

        Random r = new Random();

        for (int i = 0; i < arr.length - 1; i++) {
            // 找到一个和之前不重复的数据
            while (true) {
                boolean canUse = true;
                int data = r.nextInt(33) + 1;
                for (int i1 = 0; i1 < i; i1++) {
                    if (data == arr[i1]) {
                        canUse = false;
                        break;
                    }
                }
                if (canUse) {
                    arr[i] = data;
                    break;
                }
            }
        }

        // 生成最后一位蓝球
        arr[arr.length - 1] = r.nextInt(16) + 1;

        return arr;
    }

    public static int[] customerInput() {
        int[] arr = new int[7];

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入6个红球的号码:");
        for (int i = 0; i < 6; i++) {
            // 不允许输入重复数字
            while (true) {
                boolean canUse = true;
                int data = sc.nextInt();
                if (data > 33 || data < 1) {
                    System.out.println("输入了非可选号码...");
                    canUse = false;
                }

                for (int i1 = 0; i1 < i; i1++) {
                    if (data == arr[i1]) {
                        System.out.println("输入了重复号码...");
                        canUse = false;
                        break;
                    }
                }
                if (canUse) {
                    arr[i] = data;
                    break;
                }
            }
        }
        System.out.println("请输入1个蓝球的号码:");
        while (true) {
            boolean canUse = true;
            int data = sc.nextInt();
            if (data > 16 || data < 1) {
                System.out.println("输入了非可选号码...");
                canUse = false;
            }

            if (canUse) {
                arr[6] = data;
                break;
            }
        }
        return arr;
    }

    public static void check(int[] userInput, int[] luckNumbers) {
        int count1 = 0;
        int count2 = userInput[6] == luckNumbers[6] ? 1 : 0;

        for (int i = 0; i < userInput.length - 1; i++) {
            for (int i1 = 0; i1 < luckNumbers.length - 1; i1++) {
                if (userInput[i] == luckNumbers[i1])
                    count1++;
            }
        }

        // 针对奖项输出
        switch (count1) {
            case 0:
            case 1:
                if (count2 == 1)
                    System.out.println("恭喜获得六等奖");
                if (count2 == 0)
                    System.out.println("很遗憾,没有中奖");
                break;
            case 2:
            case 3:
                if (count2 == 1)
                    System.out.println("恭喜获得五等奖");
                if (count2 == 0)
                    System.out.println("很遗憾,没有中奖");
                break;
            case 4:
                if (count2 == 0)
                    System.out.println("恭喜获得五等奖");
                if (count2 == 1)
                    System.out.println("恭喜获得四等奖");
                break;
            case 5:
                if (count2 == 0)
                    System.out.println("恭喜获得四等奖");
                if (count2 == 1)
                    System.out.println("恭喜获得三等奖");
                break;
            case 6:
                if (count2 == 0)
                    System.out.println("恭喜获得二等奖");
                if (count2 == 1)
                    System.out.println("恭喜获得一等奖");
                break;
            default:
                System.out.println("很遗憾,没有中奖");
        }


    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识C语言——第十一天

操作符&#xff1a; 1. 算数操作符&#xff1a; - * / % 2. 移位操作符&#xff1a; >> &#xff08;右移&#xff09; << &#xff08;左移&#xff09; 移动的是二进制位 例如&#xff1a; int ba<<1; 3. 位操作符&#xff1a; & 按位与 | 按位…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …

Unity技术学习:RenderMesh、RenderMeshInstanced

叠甲&#xff1a;本人比较菜&#xff0c;如果哪里不对或者有认知不到的地方&#xff0c;欢迎锐评&#xff08;不玻璃心&#xff09;&#xff01; 导师留了个任务&#xff0c;渲染大量的、移动的物体。 当时找了几个解决方案&#xff1a; 静态批处理&#xff1a; 这东西只对静…

Springboot+Vue项目-基于Java+MySQL的校园二手书交易平台系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Netty 网络编程深入学习【一】:ByteBuffer 源码解析

ByteBuffer源码阅读 ByteBuffer是一个用于处理字节数据的缓冲区类。它是Java NIO 包的一部分&#xff0c;提供了一种高效的方式来处理原始字节数据。 ByteBuffer 可以用来读取、写入、修改和操作字节数据&#xff0c;它是一种直接操作字节的方式&#xff0c;比起传统的 InputSt…

如何高速下载,百度 阿里 天翼 等网盘内的内容

如何高速下载&#xff0c;百度 阿里 天翼 等网盘内的内容&#x1f3c5; 前言教程下期更新预报&#x1f3c5; 前言 近段时间经常给大家分享各种视频教程&#xff0c;由于分享的资料是用迅雷网盘存的&#xff0c;但是绝大部分用户都是使用的某度&#xff0c;阿某的这些网盘&…

AI工具大揭秘:如何改变我们的工作和生活

文章目录 &#x1f4d1;前言一、常用AI工具&#xff1a;便利与高效的结合1.1 语音助手1.2 智能推荐系统1.3 自然语言处理工具 二、创新AI应用&#xff1a;不断突破与发展2.1 医疗诊断AI2.2 智能家居2.3 无人驾驶技术 三、AI工具在人们生活中的应用和影响3.1 生活方式的变化3.2 …

旅游系列之:庐山美景

旅游系列之&#xff1a;庐山美景 一、路线二、住宿二、庐山美景 一、路线 庐山北门乘坐大巴上山&#xff0c;住在上山的酒店东线大巴游览三叠泉&#xff0c;不需要乘坐缆车&#xff0c;步行上下三叠泉即可&#xff0c;线路很短 二、住宿 长江宾馆庐山分部 二、庐山美景

Ubuntu 20.04安装桌面XFCE

1.安装Xfce软件包 $ sudo apt update $ sudo apt install xfce42.选择gdm3和lightdm 我这里选择的是lightdm LightDM&#xff0c;即&#xff1a;Light Display Manager&#xff0c;是一个全新的、轻量的Linux桌面的桌面显示管理器&#xff0c;而传统的Ubuntu用的是GNOME桌面…

HR面试测评,招聘行政部门主管的人才测评方案

把合适的人放入到合适的岗位中&#xff0c;可以实现双赢&#xff08;企业效益和个人成就&#xff09;&#xff0c;人力资源管理者HR又该如何去发掘行政主管岗位的人才&#xff1f; 行政部门主管属于管理层岗位&#xff0c;在企业发展中有重要的作用&#xff0c;可以协助企业…

Docker私有镜像仓库搭建 带图形化界面的

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。 官网地址&#xff1a;https://hub.docker.com/_/registry 先配置私服的信任地址: # 打开要修改的文件 vi /etc/docker/daemon.json # 添加内容&#xff1a; "insecure-registries":["http://192.…

FastAPI - Pydantic相关应用

参考链接&#xff1a;Pydantic官方文档 文章目录 定义数据模型创建模型实例数据验证数据转换模型转换模型更新模型配置辅助类Fieldvalidator Pydantic 是一个 Python 库&#xff0c;主要用于数据验证和管理。数据验证是指检查数据是否符合预定的规则和格式&#xff0c;比如检查…

xss注入漏洞解析(下)

DOM型XSS 概念 DOM全称Document Object Model&#xff0c;使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结 构及样式。DOM型XSS其实是一种特殊类型的反射型XSS&#xff0c;它是基于DOM文档对象模型的一种漏洞。 HTML的标签都是节点&#xff0c;而这些节点组成了DOM的…

TeXCount failed. Please refer to LaTeX Utilities Output for details.

写LaTeX的时候总是报这个错、看了下网上也没有什么好的解决方法、就是单词计数器无法使用 我的解决方法: 看下驱动器是否还在&#xff0c;不在的话重新安装一下、不要把驱动器给删除了

开关门机关

根物体创建动画 子物体录制动画 ctrl6&#xff1a;调用动画窗口 添加关键帧&#xff1a;输入添加关键帧到第几帧&#xff0c;然后点击录制&#xff0c;最后在该物体的面板上修改其位置等&#xff0c;记得添加完要结束录制 搞个父物体是为了让动画的可移植性变高 设置触发器方…

基于OpenCv的图像金字塔

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

人工智能大模型应用指南

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

【Flask 系统教程 2】路由的使用

Flask 是一个轻量级的 Python Web 框架&#xff0c;其简洁的设计使得构建 Web 应用变得轻而易举。其中&#xff0c;路由是 Flask 中至关重要的一部分&#xff0c;它定义了 URL 与视图函数之间的映射关系&#xff0c;决定了用户请求的处理方式。在本文中&#xff0c;我们将深入探…

设计模式——行为型模式——策略模式

策略模式 定义 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式&#xff0c;它通过对算法进行封装&#xff0c;把使用算法的责任和算法的实现分割开来&a…

【ARM Cortex-M3指南】3:Cortex-M3基础

文章目录 三、Cortex-M3基础3.1 寄存器3.1.1 通用目的寄存器 R0~R73.1.2 通用目的寄存器 R8~R123.1.3 栈指针 R133.1.4 链接寄存器 R143.1.5 程序计数器 R15 3.2 特殊寄存器3.2.1 程序状态寄存器3.2.2 PRIMASK、FAULTMASK和BASEPRI寄存器3.2.3 控制寄存器 3.3 操作模式3.4 异常…