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

news2025/1/12 10:55:31

文章目录

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

综合应用

涉及的知识点:

  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("很遗憾,没有中奖");
        }


    }
}

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

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

相关文章

day5Qt作业

服务器端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//准备组件&#xff0c;初始化组件状态this->setFixedSize(800,600);chatwidget new QListWidge…

Box86源码解读记录

1. 背景说明 Github地址&#xff1a;https://github.com/ptitSeb/box86 官方推荐的视频教程&#xff1a;Box86/Box64视频教程网盘 2. 程序执行主体图 Box86版本: Box86 with Dynarec v0.3.4 主函数会执行一大堆的初始化工作&#xff0c;包括但不限于&#xff1a;BOX上下文 …

三层交换机静态路由连通实验

静态路由是一种手动配置路由表的方式&#xff0c;网络管理员需要手动指定网络中的每一个路由器下一跳路由器的地址&#xff0c;以及到达目的网络的最短路径。静态路由的路由表不会自动更新&#xff0c;如果网络拓扑发生了变化&#xff0c;管理员需要手动更改路由表。 实验拓扑图…

信息系统架构模型_1.单机应用模式和客户机/服务器模式

1.单机应用模式&#xff08;Standalone&#xff09; 单机应用系统是最简单的软件结构&#xff0c;是指运行在一台物理机器上的独立应用程序。这些软件系统&#xff0c;从今天的软件架构上来讲&#xff0c;是很简单&#xff0c;是标准的单机系统。当然至今&#xff0c;这种复杂的…

面向对象 03:类与对象的创建、初始化和使用,通过 new 关键字调用构造方法,以及创建对象过程的内存分析

一、前言 记录时间 [2024-05-10] 系列文章简摘&#xff1a; Java 笔记 01&#xff1a;Java 概述&#xff0c;MarkDown 常用语法整理 Java 笔记 11&#xff1a;Java 方法相关内容&#xff0c;方法的设计原则&#xff0c;以及方法的定义和调用 面向对象 01&#xff1a;Java 面向对…

数学:人工智能领域的基石与灵魂

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到了我们生活的方方面面&#xff0c;从智能家居、智能医疗到自动驾驶、智能客服&#xff0c;AI无处不在。然而&#xff0c;当我们赞叹于AI的神奇时&#xff0c;却往往忽视了其背后的推动力——数学…

Leetcode—2105. 给植物浇水 II【中等】

2024每日刷题&#xff08;131&#xff09; Leetcode—2105. 给植物浇水 II 实现代码 class Solution { public:int minimumRefill(vector<int>& plants, int capacityA, int capacityB) {int size plants.size();int i 0;int j size - 1;int capA capacityA;in…

结合创新!通道注意力+UNet,实现高精度分割

在U-Net网络中加入通道注意力机制能显著提升模型的性能&#xff01; 具体点说是在U-Net的卷积层之后添加一个通道注意力模块&#xff0c;这样这个模块可以学习不同通道之间的权重&#xff0c;并根据这些权重对通道进行加权&#xff0c;从而增强重要通道的特征表示。 这种结合…

【WebGIS实例】(14)MapboxGL 加载地形高程数据

前言 官网示例&#xff1a;Add 3D terrain to a map | Mapbox GL JS | Mapbox 大佬博客&#xff1a;Mapbox GL基础&#xff08;七&#xff09;&#xff1a;地形数据的处理与加载 (jl1mall.com) 加载Mapbox地形数据 map.once(style.load, () > {map.addSource(mapbox-dem,…

常见扩频系统的基础概念和模型

扩频系统是一种通信技术&#xff0c;它通过将信号的频谱扩展到一定程度来实现传输&#xff0c;这种系统的设计和实现涉及到多种不同的方法和技术。 扩频系统的主要特点和好处包括&#xff1a; 抗干扰能力强&#xff1a;由于信号被扩展到较宽的频带上&#xff0c;单位带宽内的功…

代码随想录算法训练营第六十二天|503.下一个更大元素II、42.接雨水

代码随想录算法训练营第六十二天|503.下一个更大元素II、42.接雨水 503.下一个更大元素II 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元…

jenkins使用gitLab(极狐)认证登陆

jenkins安装 GitLab Authentication插件 我因为java版本和最新GitLab Authentication 1.19版本不兼容&#xff0c;选择了本地安装 找个历史版本1.13版本&#xff0c;然后下载到电脑上 - 本地上传插件并安装 在极狐上创建一个应用 - 配置应用信息 应用名&#xff1a;jenkinsLo…

GAMMA Lab——知识图谱和LLM大模型

图机器学习的发展与分类 图基础模型 LLM基础模型 GNN LLM 前沿工作

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

Oracle -在线回缩表

conn scott/tiger DROP TABLE EMP1 PURGE; CREATE TABLE EMP1 AS SELECT * FROM EMP; alter table emp1 enable row movement; -- 启动回缩特性 insert into emp1 select * from emp1; / / commit; -- 增加到14000行 -- 分析表的结构 analyze table emp1 comput…

mysql从库SHOW SLAVE STATUS字段详解

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mysql从库SHOW SLAVE STATUS字段详解 前言输出字段展示字段说明 前言 在数据库的舞台上&#xff0c;主从同步就像是一场华丽的舞蹈&#xff0c;而SHOW SLAVE STATUS命令则是这场舞蹈的灯光&#xff0…

Spark Streaming笔记总结(保姆级)

万字长文警告&#xff01;&#xff01;&#xff01; 目录 一、离线计算与流式计算 1.1 离线计算 1.1.1 离线计算的特点 1.1.2 离线计算的应用场景 1.1.3 离线计算代表技术 1.2 流式计算 1.2.1 流式计算的特点 1.2.2 流式计算的应用场景 1.2.3 流式计算的代表技术 二…

10个超实用的Excel技巧!207套Excel模板(电商、数据分析、排班表、工作计划表)

职场如战场&#xff0c;掌握Excel技能&#xff0c;让你的工作效率飙升&#xff01; 今天&#xff0c;我给大家分享10个Excel的超实用技巧&#xff0c;让你从Excel小白秒变大神&#xff01; 1️⃣ 快速求和&#xff1a;使用 Alt 一键求和&#xff0c;告别手动输入SUM函数。 …

【HMWeb】HTML使用Leaflet实现本地离线地图Gis应用

下载Leaflet 官网下载&#xff1a;https://leafletjs.com/reference.html CSDN&#xff1a;https://download.csdn.net/download/hmxm6/89291989 选择版本号 添加html文件 加入代码 <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

智慧公厕解决什么问题?实现了什么样的价值?

公共厕所一直是城市管理的难题&#xff0c;常常面临着卫生条件不佳、管理不善以及使用体验差等问题。为了解决这些困扰城市的难题&#xff0c;智慧公厕应运而生。智慧公厕不仅应用了信息化和数字化技术&#xff0c;还通过全方位的智能化应用&#xff0c;彻底改变了传统公厕的面…