Java基础(第六期):Java基础巩固、逢七跳过、数组求和、判断数组是否相等、数组逆置、元素位置查找、评委打分、随机产生验证码

news2025/1/11 7:41:00

Java基础专栏【点击跳转学习】

Java基础(第六期):对前五期的综合练习

文章目录

  • 综合练习巩固JAVA基础
  • 第六期
    • 一、逢 7 跳过
    • 二、数组元素求和
    • 三、判断两个数组元素是否相同
    • 四、查找元素在数组中的索引
    • 五、数组元素反转
          • 使用for循环的实现方式一、
    • 六、评委打分
    • 七、随机产生验证码

综合练习巩固JAVA基础

第六期

一、逢 7 跳过

需求:

朋友聚会的时候可能会玩一个游戏:逢七过

规则是:从任意一个数字开始报数,当你要报的数字包含了 7 或者 是 7 的倍数时都要说: 过。

为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1- - 100 之间的满足逢七过的数据。

package com.liujintao.seven;
public class EventSevenTimes {
    public static void main(String[] args) {
        // 动态初始化我们的数组内容(注意取值范围,实际值要小1)
        int[] arr = new int[100 + 1];
        satisfy(arr);
    }


    public static void satisfy (int[] arr) {
        // 使用遍历操作,进行赋值 1 - 100;
        for (int i = 1; i < arr.length; i++) {
            arr[i] = i;
            // 进行判断:符合条件的就打印他的值,不符和则跳过
            if (arr[i] == 7 || arr[i] % 7 == 0 || arr[i] % 10 == 7) {
                System.out.println(arr[i] + ": 过");
            }
        }
    }


}

在这里插入图片描述

二、数组元素求和

需求:

​ 有这样一个数组:元素是:{68, 27, 95, 88, 171, 996, 51, 210}

​ 求出该数组中满足要求的元素和

​ 要求是: 求和的元素各位和十位都不能是 7 ,并且只能是偶数

package com.liujintao.sum;

public class ArraySum {
    public static void main(String[] args) {
        int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
        int result = getSum(arr);
        System.out.println("满足条件的元素和为:" + result);
    }

    public static int getSum (int[] arr) {
        // 要求:元素各位和十位不能是7 ,且只能是偶数
        int sum = 0;
        for (int i= 0; i <arr.length; i++) {
            if (arr[i] != 7 && arr[i] % 10 != 7 && arr[i] % 2 == 0) {
                sum += arr[i];
            }
        }
        return sum;
    }
}

在这里插入图片描述

三、判断两个数组元素是否相同

需求:

	1. 定义一个方法,用于比较两个数组是否相同
	1. 需求:长度,内容,顺序完全相同
package com.liujintao.compare;

public class SameArray {
    public static void main (String[] args) {
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = {1, 2, 3, 4, 5};
        boolean result = CompareSame(arr1, arr2);
        System.out.println(result);
    }


    /**
     * 通过返回值,为调用者解决问题!
     * @param arr1
     * @param arr2
     */
    public static boolean CompareSame (int[] arr1, int[] arr2) {
        // 判断长度是否相同
        if (arr1.length != arr2.length) {
            return false;
        }
        System.out.println("上面判断不成立,则下面执行");
        // 如果上面条件不成立,则长度和顺序相同,遍历任意一个数组,都能达到同样次数的遍历
        for (int i = 0 ; i < arr1.length; i++) {
            // 判断两个数组相同下标的元素是否相同
            if (arr1[i] != arr2[i]) {
                return false;
            }
        }
        // 上面的判断都没有进入,则表示相同。
        return true;
    }
}


在这里插入图片描述

四、查找元素在数组中的索引

需求:

  1. 设计一个方法,查找元素在数组中的索引位置

  2. 已知一个数组 arr = {19, 28, 37, 46, 50};

  3. 键盘录入一个数据,查找该数据在数组中的索引

  4. 并在控制台输出找到的索引值。如果找不到,则输出 -1。

package com.liujintao.index;

import java.util.Scanner;

public class ArrayIndex {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        int result = getArrayIndex(arr);
        System.out.println(result);
    }

    /**
     * 该方法的目的是完成数组索引的查找
     */

    public static int getArrayIndex(int[] arr) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数组元素");
        int indexNum = sc.nextInt();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == indexNum) {
                return i;
            }
        }
        return -1;
    }
}

在这里插入图片描述

考虑多元素的情况:

package com.liujintao.index;

import java.util.Scanner;

public class ArrayIndex {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50, 28, 28, 19};
        int[] result = getArrayIndex(arr);
        // 如果返回的数组为 0 ,表示没有 返回-1, 如果有长度,则返回数组值(索引号)
        if (result.length == 0) {
            System.out.println(-1);
        } else {
            for (int i = 0; i < result.length; i++) {
                System.out.println(result[i]);
            }
        }
    }

    /**
     * 该方法的目的是完成数组索引的查找
     */

    public static int[] getArrayIndex(int[] arr) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数组元素:");
        // 1、统计相同数组元素的个数
        int indexNum = sc.nextInt();
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == indexNum) {
                count++;
            }
        }

        // 2、创建新数组,遍历查找相同的元素,存入新数组中
        int[] indexArr = new int[count];
        int a = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == indexNum) {
                // a :表示的是新数组的下标索引
                indexArr[a] = i;
                a++;
            }
        }

        // 3、将新数组返回给调用者
        return indexArr;

    }
}

在这里插入图片描述

五、数组元素反转

需求:

已知一个数组,arr = {11, 22, 33, 44, 55};使用程序实现把数组中的元素交换位置。

交换后的数组为 arr = {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。

package com.liujintao.reversal;

public class ReversalArray {
    public static void main(String[] args) {
        // 你想要键盘录入数组也是可以的
       int[] arr = {11, 22, 33, 44, 55};

        int[] result = handleReversalArray(arr);
        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i]);
        }
    }

    /**
     * 手写冒泡排序方法
     */
    public static int[] handleReversalArray(int[] arr) {
        int i = 0;
        int j = arr.length - 1;
        while (i < j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
        return arr;
    }
}

在这里插入图片描述

使用for循环的实现方式一、
package com.liujintao.reversal;
    /*
        使用for循环实现逆置数组
     */
public class ReversalArray2 {
    public static void main(String[] args) {
        // 你想要键盘录入数组也是可以的
        int[] arr = {11, 22, 33, 44, 55};
        int[] result = handleReversalArray(arr);
        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i]);

        }
    }

    /**
     * 使用for循环实现逆置的API
     */
    public static int[] handleReversalArray (int[] arr) {
        // 和 while 一样,先设置好下标
        int start = 0;
        int end = arr.length - 1;
        for (; start < end; start++, end--) {
            int temp = arr[ start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
        return arr;
    }
}

在这里插入图片描述

六、评委打分

需求:

在编程竞赛中,有 6 个评委为参赛选手打分,分数为 0 - 100 的整数分。

选手的最后得分为:去掉一个最高分和一个最低分后 的 4个评委的平均值。

  • 注意程序的节流
package com.liujintao.judge;

import java.util.Scanner;

public class JudgeScore {
    public static void main(String[] args) {
        double result = handleScore();
        System.out.println("去掉最高分和最低分,最终得分为;" + result);
    }


    /**
     * 获取评委打分的功能方法
     */
    public static double handleScore () {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[6];
        // 1、 获取分数
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入分数:");
            int score = sc.nextInt();
            // 判断数据是否合理
            if (score >=  0 && score <= 100) {
                arr[i] = score;
            } else {
                System.out.println("您输入的分数不合理, 请检查!");
                i--;
            }
        }

        // 1、调用max方法
        int max = handleMax(arr);

        // 2、调用min方法
        int min = handleMin(arr);

        // 3、最终将平均值返回出去
        return getAverage(arr, max, min);

    }

    /**
     * 求和的方法
     * @param arr
     * @param max
     * @param min
     * @return
     */
    private static double getAverage(int[] arr, int max, int min) {
        int sum = 0;
        double average = 0;
        // 遍历求和
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        sum = sum - max - min;
        average = (double)sum / (arr.length - 2);

        return average;
    }

    /**
     * 求最大值方法
     * @param arr
     * @return
     */
    public static int handleMax (int[] arr) {
        int max = arr[0];
        for (int i  = 1; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 求最小值方法
     */
    public static int handleMin (int[] arr) {
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }
}

在这里插入图片描述

七、随机产生验证码

package com.liujintao.random;

import java.util.Random;
import java.util.Scanner;

public class RandomNumber {
    /**
     * 该函数调用验证码所有的函数,完成验证码模块功能开发
     * @param args
     */
    public static void main(String[] args) {
        // 1、调用产生验证码元素函数
        char[] result = CodeCharArray();

        // 2、调用产生验证码下标索引的数组函数
        int[] array_index = RandomCode();

        // 3、调用生成验证码函数
        String code = getCode(result, array_index);
        System.out.println("生成的验证码为:" + code);

        // 4、调用获取用户输入的验证码函数
        String user = InputCode();
        System.out.println("用户输入的验证码为:" + user);

        // 5、调用验证结果的处理函数
        handleCode(code, user);
    }

    /**
     *1.获取验证码元素
     */
   public static char[] CodeCharArray() {
       // 产生的验证码元素方法字符数组中
       char[] ch = new char[62];

       // 获取验证码元素
       int index = 0;
       for (char c = 'a'; c <= 'z'; c++) {
            // 注意,字符可以用数组表示,所以这里用char类型,计数器从c 到 z
           ch[index] = c;
           index++;
       }

       for (char c = 'A'; c <= 'Z'; c++) {
           ch[index] = c;
           index++;
       }

       for (char i = '0'; i <= '9'; i++) {
           ch[index] = i;
           index++;
       }

       return ch;


   }


    /**
     * 2.产生验证码下标索引的方法
     */
    public static int[] RandomCode() {
        Random r = new Random();
        int[] indexNum = new int[5];
        for (int i = 0; i < 5; i++) {
            indexNum[i] = r.nextInt(26 + 26 + 10);
        }
        return indexNum;
    }

    /**
     *3.得到验证码字符串的方法
     * @param ch
     * @param index
     * @return
     */
    public static String getCode(char[] ch, int[] index) {
        // 用字符串存放获得的每个字符验证码,并返回
        String CodeStr = "";
        for (int i = 0; i < index.length; i++) {
            CodeStr += ch[index[i]];
        }
        return CodeStr;
    }


    /**
     * 4.前台发送过来用户输入的验证码
     */
    public static String InputCode() {
        Scanner sc = new Scanner(System.in);
        // 这里是模拟请求的验证码
        String inputCode = "";
        System.out.println("请输入验证码:");
        for (int i = 0; i < 5; i++) {
            // 注意请求过来的都是json格式,需要转换成String(所以这里用String)
            String str = sc.next();
            inputCode += str;
        }
        return inputCode;
    }


    /**
     * 5.处理验证码是否正确的方法
     */
    public static void handleCode(String code, String user) {
        if (code.equals(user)) {
            System.out.println("验证码输入正确!");
        } else {
            System.out.println("验证码输入有误,请检查后重新输入!");
        }
    }
}

在这里插入图片描述

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

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

相关文章

【LeetCode刷题-二分查找】--278.第一个错误的版本

278.第一个错误的版本 /* The isBadVersion API is defined in the parent class VersionControl.boolean isBadVersion(int version); */public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1,right n;while(left < right){int…

webpack工作原理

目录 合并代码模块化webpack 的打包webpack 的结构webpack 的源码addEntry 和 _addModuleChainbuildModuleCompilation 的钩子产出构建结果 了解 webpack 实现原理&#xff0c;掌握 webpack 基础的工作流程&#xff0c;在平时使用 webpack 遇见问题时&#xff0c;能够帮助我们洞…

Doris学习--1、Doris简介、操作Doris、Doris架构(数据模型)

星光下的赶路人star的个人主页 心之所向&#xff0c;剑之所往 文章目录 1、Doris简介1.1 快速开始1.2 安装配置1.2.1 应知前提1.2.2 配置Doris1.2.2.0 配置前提1.2.2.1 配置FE&#xff08;Frontend&#xff09;1.2.2.2 启动FE1.2.2.3 连接FE1.2.2.4 停止FE1.2.2.5 配置BE&#…

【函数讲解】pygmo中的函数 fast_non_dominated_sorting() + 利用支配关系,学习一个SVM分类器,将解分为两类

这个函数是用来执行非支配排序的&#xff0c;可以分层构建Pareto&#xff0c;并返回每一层的解以及每个解支配其他解的索引、解被其他解支配的次数、解所在的非支配层级。这个函数对这些解进行非支配排序&#xff0c;并返回四个数组&#xff1a;ndf, dl, dc, 和 ndr。 ndf (Non…

2.3 CE修改器:浮点数扫描

本关需要使用 Cheat Engine 工具对浮点数进行扫描&#xff0c;完成修改任务。浮点数是一种带有小数点的数值&#xff0c;通过“浮点数”扫描方式进行修改。本关中&#xff0c;健康值为单精度浮点数&#xff0c;弹药值为双精度浮点数&#xff0c;需要将这两项数值都修改为 5000 …

InSAR形变监测方法与研究进展(朱建军,中南大学)

文章目录 摘要引言InSARInSAR原理SAR卫星 InSAR监测技术D-InSARMT-InSARPS-InSARSBAS-InSARDS-InSAR&#xff08;Distributed Scatterer InSAR&#xff09;MAI&#xff08;Multi-Aperture InSAR, 多孔径InSAR&#xff09; InSAR形变监测应用与发展城市沉降监测矿山形变监测地震…

深度探究深度学习常见数据类型INT8 FP32 FP16的区别即优缺点

定点和浮点都是数值的表示&#xff08;representation&#xff09;&#xff0c;它们区别在于&#xff0c;将整数&#xff08;integer&#xff09;部分和小数&#xff08;fractional&#xff09;部分分开的点&#xff0c;点在哪里。定点保留特定位数整数和小数&#xff0c;而浮点…

用互联网思维打造物流网(别人笑我太疯癫,我把自己当成仙)

引言 最近在写网络相关文章&#xff0c;在类比互联网与物流网时发现他们有很多相似之处。 互联网传输的是数据&#xff0c;物流网传输的是物品&#xff0c;功能相似&#xff0c;都是用于传输。 互联网在传输数据时&#xff0c;通过路由选择最佳传输路线&#xff1b;物流在运…

微信小程序数据交互和缓存

目录 前言&#xff1a; 数据交互 1. 发起网络请求 2. WebSocket 2.1实时数据库 3. 微信支付 数据缓存 1. 页面级缓存 2. 内存级缓存 3. 数据缓存策略 优化用户体验 总结 前言&#xff1a; 在开发微信小程序时&#xff0c;数据交互和缓存是非常重要的方面。本文将介…

【已解决】ModuleNotFoundError: No module named ‘matplotlib‘

问题描述 Traceback (most recent call last): File "/home/visionx/nickle/temp/SimCLR/linear_evaluation.py", line 207, in <module> import matplotlib.pyplot as plt ModuleNotFoundError: No module named matplotlib 解决办法 pip install matp…

2020年-2022年聚合支付牌照机构评级结果分析,D/E有所增加

本文首发于移动支付网&#xff0c;标题“聚合支付机构最新评级结果公布&#xff0c;A-、B级别机构减少”&#xff0c;该文是基于其内容进行了数据修订及部分内容优化而成文。 11月7日&#xff0c;中国支付清算协会发布2022年度收单外包服务机构评级等级结果。本次评级工作&…

Vert.x学习笔记-什么是Verticle

什么是Verticle Verticle是Vert.x应用中的基本编程单元&#xff0c;类似于Java中的Servlet、Pojo Bean或Akka中的Actor。它可以使用不同的编程语言实现&#xff0c;并且这些由不同编程语言实现的Verticle可以封装到一个模块中&#xff0c;进而部署到一个Vert.x应用中。Verticl…

海康威视嵌入式软件一面(技术面)

海康威视技术面试大部分都是基础问题和牛客上的问题&#xff0c;最后还有手撕代码部分也是牛客原题&#xff0c;总体中等偏难。 一、问答题 1.什么是野指针&#xff0c;野指针如何形成 【C语言基础】野指针与空指针_野指针和空指针-CSDN博客 2.const和static作用和区别 sta…

Java算法(七):随机产生验证码 前后端验证码比对处理 实战思路步骤

Java算法&#xff08;七&#xff09; 随机产生验证码 package com.liujintao.random;import java.util.Random; import java.util.Scanner;public class RandomNumber {/*** 该函数调用验证码所有的函数&#xff0c;完成验证码模块功能开发* param args*/public static void …

2.1 CE修改器:精确数值扫描

本关是CE修改器的第一关&#xff0c;用户需要通过 Cheat Engine 工具完成精确扫描值。在这个练习中&#xff0c;需要将一个特定的数值&#xff08;健康值&#xff09;改变为 1000。首先&#xff0c;要确保数值类型设置正确&#xff0c;默认的是2字节或4字节。接着&#xff0c;选…

Tkinter,一个轻量级的Python GUI库

欢迎关注作者微信公众号&#xff1a;愤怒的it男 Tkinter&#xff08;即 tk interface&#xff0c;简称“Tk”&#xff09;本质上是对Tcl/Tk软件包的Python接口封装&#xff0c;属于Python自带的标准库&#xff0c;安装好Python后可以直接使用Tkinter库而无须另行安装。Tkinter库…

亲身体验告诉你:亚马逊云科技海外服务器是否值得一试?

前言 在当今数字化时代&#xff0c;云计算已经成为企业和个人发展的重要支撑。亚马逊云科技作为全球领先的云计算服务提供商&#xff0c;其海外服务器备受瞩目。然而&#xff0c;对于一些用户来说&#xff0c;是否值得一试亚马逊云科技的海外服务器仍然是一个疑问。本文将通过亲…

深入了解SpringMvc接收数据

目录 一、访问路径&#xff08;RequestMapping&#xff09; 1.1 访问路径注解作用域 1.5 路径精准&#xff08;模糊&#xff09;匹配 1.2 访问路径限制请求方式 1.3 进阶访问路径请求注解 1.4 与WebServlet的区别 二、接收请求数据 2.1 请求param参数 2.2 请求路径参数 2.3 请求…

MySQL数据库实验记录

输入密码 显示数据库 mysql命令以分号;结束 创建数据库 建表 写错了就会报错 没选数据库也会报错

GEE:计算有效像素占比(统计有效像素数量、像素总数)

作者:CSDN @ _养乐多_ 在GEE中进行遥感数据处理的时候,经常会由于去云,导致影像出现空洞,只有部分像素可用,或者在进行特殊处理时,只对有效像素进行处理,但是我们不知道有效像素数量和占比,无法对结果做出准确的分析。这个时候就需要统计有效像素数量占比。 本文记录…