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

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.mfbz.cn/a/134986.html

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

相关文章

MySQL中的索引

目录 一、概念 二、作用和特点 作用 特点 三、使用场景 四、使用 1、查看索引 2、创建索引 3、删除索引 五、索引底层数据结构的实现 B树&#xff08;B-树&#xff09; B树 特点 重复出现的好处 一、概念 索引 翻译成英文&#xff1a;index&#xff08;下标&#xf…

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&#…

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;而浮点…

SpringBoot学习(黑马程序员day12)

1jwt令牌 JWT的组成&#xff1a; &#xff08;JWT令牌由三个部分组成&#xff0c;三个部分之间使用英文的点来分割&#xff09; 第一部分&#xff1a;Header(头&#xff09;&#xff0c; 记录令牌类型、签名算法等。 例如&#xff1a; {"alg":"HS256",&qu…

【已解决】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…

嵌入式软件开发是个啥职业?

在硬件行业中&#xff0c;有一类工作岗位是更偏向软件的&#xff0c;或者说是软硬结合非常紧密的工作&#xff0c;那就是嵌入式开发工程师。 说起嵌入式&#xff0c;可能很多没有接触过电子类的人没有听说这些东西。 其实简单来说&#xff0c;嵌入式开发就是写程序去控制硬件电…

HBuilderX vue项目打包上传到服务器

完成后有个’dist’目录,把真个目录通过FTP 上传到服务器,Mac电脑使用cyberduck 上传 服务器使用‘宝塔’进行一件部署,基本上就是傻瓜式的点击下一步

MySQL数据库实验记录

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

十五、信号量

1、概述 (1)前面介绍的队列(queue)可以用于传输数据&#xff1a;在任务之间、任务和中断之间。 (2)有些时候我们只需要传递状态&#xff0c;并不需要传递具体的信息&#xff0c;比如&#xff1a; 我的事做完了&#xff0c;通知一下你。卖包子了、卖包子了&#xff0c;做好了…

软件过程模型分析与适应场景: 瀑布、原型、增量、螺旋、组件化和统一模型简介

软件过程模型&#xff1a; 瀑布模型 ​ 有很强的前后关联性&#xff0c;前一阶段的输出是后一阶段的输入&#xff0c;而且不可回溯性。 适应场景&#xff1a; ​ 软件开发人员经验丰富​ 需求变化少&#xff0c;变更少&#xff0c;可以一次性获取全部需求​ 项目风险低&…

专用博客模板

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

Docker实用篇

Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…

六:ffmpe音频参数的使用

-aframes 设置要输出的音频帧数 -b:a 设置音频码率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音的编解码器&#xff0c;如果用copy标识原始编解码数据必须被copy -an 不处理音频 -af 音频过滤器 写笔记前查阅了其它说明&#xff0c; -aframes&#xff1a;等价…

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

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

微信小程序隐私政策不合规,应当由用户自主阅读后自行选择是否同意隐私政策协议,不得默认强制用户同意

小程序隐私政策不合规&#xff0c;默认自动同意《用户服务协议》及《隐私政策》&#xff0c;应当由用户自主阅读后自行选择是否同意隐私政策协议&#xff0c;不得默认强制用户同意&#xff0c;请整改后再重新提交。 把 登录代表同意《用户协议》和《隐私政策》 改为 同意《用…

Socket编程

1. 什么是Socket 为了应用层和传输层能够交互&#xff0c;操作系统提供一些API给应用层&#xff0c;这些API可以把应用层的数据交给传输层&#xff0c;而这些API就是socket。传输层中有很多协议&#xff0c;其中知名的就是TCP和UDP&#xff0c;因此操作系统提供了两个版本的AP…

Windows10腾讯文档下载和安装

文章目录 Windows10腾讯文档下载和安装官网下载执行安装 Windows10腾讯文档下载和安装 官网下载 官网 下载后&#xff1a; 执行安装 找到下载目录 安装后打开 扫描登录即可

Clickhouse学习笔记(9)—— 语法优化

ClickHouse 的 SQL 优化规则是基于 RBO(Rule Based Optimization&#xff09;实现的 官方数据集的使用 为了方便测试CK的语法优化规则&#xff0c;尝试使用官方提供的数据集&#xff1b; 需要使用的数据集是visits_v1和hints_v1&#xff1a; Anonymized Web Analytics Data …
最新文章