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

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

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

文章目录

综合练习巩固JAVA基础

第六期

一、逢 7 跳过

需求:

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

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

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

java 复制代码
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 ,并且只能是偶数

java 复制代码
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. 需求:长度,内容,顺序完全相同
java 复制代码
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。

java 复制代码
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;
    }
}

考虑多元素的情况:

java 复制代码
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}; 并在控制台输出交换后的数组元素。

java 复制代码
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循环的实现方式一、
java 复制代码
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个评委的平均值。

  • 注意程序的节流
java 复制代码
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;
    }
}

七、随机产生验证码

java 复制代码
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("验证码输入有误,请检查后重新输入!");
        }
    }
}
相关推荐
customer082 分钟前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈4 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
WaaTong6 分钟前
《重学Java设计模式》之 单例模式
java·单例模式·设计模式
面试鸭8 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据9 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@12 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭38 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
334554321 小时前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言