编程训练基础代码六

1、定义一个方法,该方法能够找出两个小数中的较小值并返回。

public class SmallerValue {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入两个整数: ");int a=sc.nextInt();int b=sc.nextInt();System.out.println("较小值为" + rMin(a, b));}private static int rMin(int a, int b) {int min=a;if (min>b){min=b;}return min;}
}

2、定义一个方法判断整数数组中某一个数是否存在,并将结果返回

package com.itheima.test;/*** @author walls1717* @since 2024/3/7**/import java.util.Scanner;/**** @title: existsOr* @Author Tan* @Date: 2024/3/7 19:44* @Version 1.0*/
public class existsOr {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请输入一个整数");boolean b = exists1(sc.nextInt());if (b==true){System.out.println("存在");}else {System.out.println("不存在");}}private static boolean exists1(int nextInt) {int []array = {1, 2, 3, 4, 5};for (int i = 0; i < array.length; i++) {if (array[i]==nextInt){return true;}}return false;}
}

3、定义一个方法统计指定范围(例如100~200)之间能被3整除的数,并将数放入一个数组中返回

public class Demo03 {public static void main(String[] args) {//创建扫描器Scanner sc = new Scanner(System.in);System.out.println("请输入两个整数");int a=sc.nextInt();int b=sc.nextInt();extracted(a, b);}private static void extracted(int a, int b) {for (int i = 0; i < arrdo(a, b).length; i++) {System.out.print(arrdo(a, b)[i]+" ");}}private static int[] arrdo(int a, int b) {int count=0;for (int i = a,j=0; i <= b; i++){if (i%3==0  ){count++;}}int[] arr=new int[count];for (int i = a,j=0; i <= b; i++) {if (i%3==0  ){arr[j]=i;j++;}}return arr;}
}

4、定义一个方法,接收一个整型数组,判定数组中的元素是否是升序排列,并将结果返回

public class Demo06 {public static void main(String[] args) {int[] arr={1,2,3,5,4};asc(arr);}private static boolean asc(int[] arr) {for (int i = 0; i < arr.length; i++) {for (int j = arr.length-1; j < 0; j--) {if (arr[i]>arr[j]){return false;}}}return true;}
}

5、设计一个方法,可以接收1个整数n(比如4)来代表行数,然后使用方法打印出下面的图形状

打印效果如下:
@
@@
@@@
@@@@
public class Demo05 {public static void main(String[] args) {Scanner sc =new Scanner(System.in);System.out.println("请输入一个整数");input(sc.nextInt());}private static void input(int nextInt) {for (int i = 0; i < nextInt; i++) {for (int j = 0; j <=i ; j++) {System.out.print("@");}System.out.println();}}
}

5、需求:兔子问题(斐波那契数列)。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?由此可见兔子对象的数据是:1 , 1 , 2 , 3 , 5 , 8 …

首先我们对其数据进行分析,可知从第三天开始,每天的兔子数量等于前两天之和,其次我们要知道递归的思想:
递归:在方法中调用方法本身的现象。注意事项:1.递归要有出口 2.递归次数不宜过多 3.递归所体现的思想,就是拆分合并的思想
public static void main(String[] args) {//定义一个方法去实现逻辑,传入月数并接收其返回值int sum = sumRabbit(20);//打印结果System.out.println("兔子的对数为:" + sum);}private static int sumRabbit(int i) {//判断传来的月数是不是第1个月或者两个月,如果是则返回1if (i == 1 || i == 2) {return 1;} else {//如果传来的月数不是1或者2,那么返回前两个月兔子数量的和;这里采用了递归的思想return sumRabbit(i - 1) + sumRabbit(i - 2);}}

6、数字是有绝对值的,非负数的绝对值是它本身,负数的绝对值是它本身取反。

​ 请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。

public class Demo06 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个数字");double v = absoluteValue(sc.nextDouble());System.out.println(v);}private static double absoluteValue(double nextDouble) {return nextDouble>0?nextDouble:-nextDouble;/*if (nextDouble<0){return -nextDouble;}else {return nextDouble;}*/}
}

7、定义一个方法,接收两个整数作为数值范围,然后在控制台打印出范围内之间的满足逢七必过的数

​ 逢七必过规则(数字包含7或者是7的倍数)

public class Demo12 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入两个整数 : ");int start=sc.nextInt();int end=sc.nextInt();printNumbersSkippingSevens(start,end);}private static void printNumbersSkippingSevens(int start, int end) {System.out.println("逢七必过的数字有: ");for (int i = start; i <=end; i++) {
if (containsSeven(i)||isMultipleOfSeven(i)){System.out.println(i);
}}}/*** 是七的倍数* @param i* @return*/private static boolean isMultipleOfSeven(int i) {return i%7==0;}/*** 包含七* @param i* @return*/private static boolean containsSeven(int i) {String numStr=Integer.toString(i);return numStr.contains("7");}方法二:private static void printNUm(int start, int end) {for (int i = start; i <= end; i++) {int ge = i % 10;int shi = i / 10 % 10;if (i %7==0||ge==7||shi==7) {System.out.println(i);}}}
}

8、定义一个方法,接收一个小数数组(小数点后只有1位),然后找出数组中准整数有几个返回准整数指的是小数点之后全是0的小数

public class Demo08 {public static void main(String[] args) {//定义一个小数数组double[] numbers = {1.0, 2.0, 3.5, 4.0, 5.0, 6.1, 7.0};System.out.println("准整数" + findNearIntegers(numbers));}private static int findNearIntegers(double[] numbers) {int count=0;for (int i = 0; i < numbers.length; i++) {/*if ((numbers[i]*10)%10==0){count++;}*/int n= (int) numbers[i];if (n==numbers[i]){count++;}}return count;}
}

9、请定义一个方法,对正数的小数进行四舍五入的操作(不考虑负数情况)。

​ 四舍五入之后的结果是一个int整数类型并返回。

提示:四舍五入的操作关键是十分位(小数第一位),如何获取十分位?

public class Demo09 {public static void main(String[] args) {//自定义一个数组double[] numbers = {1.2, 2.5, 3.7, 4.6, 5.1};for (int i = 0; i <roundToNearestInt(numbers).length ; i++) {System.out.print(roundToNearestInt(numbers)[i]+" ");}}private static int[] roundToNearestInt(double[] numbers) {int[] arr=new int[numbers.length];for (int i = 0; i < numbers.length; i++) {if (numbers[i]*10%10<5){arr[i]=(int) numbers[i];}else {arr[i]=(int) numbers[i]+1;}}
return arr;}
}

10、现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位。。。依次类推。请编写程序计算,这个数组所表示的整数值。例如:

数组:{2, 1, 3, 5, 4}
表示的整数为:21354 // 注:是整数类型的两万一千三百五十四,不是字符串拼起来的。
public class Demo10 {public static void main(String[] args) {int[] arr={2, 1, 3, 5, 4};multiplication(arr);}private static void multiplication(int[] arr) {int sum=0;/*int power=1;for (int i = arr.length-1; i >= 0; i--) {sum+=arr[i]*power;power*=10;}*/for (int i = 0; i < arr.length; i++) {sum=sum*10+arr[i];}System.out.println(sum);}
}

11、定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。(可以创建其他数组,不必须在原数组中改变)

public class Demo11 {public static void main(String[] args) {//定义一个初始数组int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] newArray = rearrangeArray(originalArray);System.out.print("[ ");for (int num : newArray) {System.out.println(num);if (num==(newArray.length-1)){System.out.print(", ");}}/*for (int i = 0; i < newArray.length; i++) {System.out.print(newArray[i]);if (i < newArray.length - 1) {System.out.print(", ");}}*/System.out.println(" ]");}private static int[] rearrangeArray(int[] originalArray) {int left=0;int right=originalArray.length-1;//定义一个新数组, 用于存放排列好的数组int[] newarr=new int[originalArray.length];for (int i = 0; i < originalArray.length; i++) {if (originalArray[i]%2==0){newarr[left++]+=originalArray[i];}else {newarr[right--]+=originalArray[i];}}return newarr;}
}

12、已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中第一次出现的索引。

​ 并在控制台输出找到的索引值。如果没有查找到,则输出-1

public class Demo12 {public static void main(String[] args) {//获取扫描器Scanner sc = new Scanner(System.in);//键入数组int[] arr = {19, 28, 37, 46, 50};System.out.println("请录入一个数据");System.out.println("该数据为"+quaryIndex(arr, sc.nextInt()));}/*** 在数组中查找索引,并判断是否存在** @param arr* @param num* @return*/private static int quaryIndex(int[] arr, int num) {if (num!=arr[arr.length-1]&&num<0){return -1;}//遍历数组查找与输入的数字匹配的索引for (int i = 0; i < arr.length; i++) {if (num==arr[i]){return i;}}return -1;}
}

13、能够合理的设计方法参数和返回值, 并调用方法

需求描述:模拟一个简单的考试管理系统, 已知成绩为 10, 20, 30, 40, 50, 60, 70, 80

  • 程序运行后, 展示一个菜单, 根据用户输入的选择, 程序响应不同的业务逻辑
  • 程序需要一直运行, 直到用户输入 6 的时候, 程序结束

实现提示

  • 将需要操作的多个成绩, 存入一个数组中
  • 使用输出语句构建出菜单
  • 利用 switch 或者是 if 语句, 区分出用户输入的 1 2 3 4 5 6
  • 1 ~ 5 每一个都是一段独立的功能, 所以定义5个方法, 分别实现业务功能
  • 在用户输入 1 ~ 5 的时候, 调用对应的方法
:
package com.itheima.test;/*** @author walls1717* @since 2024/3/4**/import javax.swing.text.View;
import java.util.Scanner;/*** @title: ExaminationManagementSystem* @Author Tan* @Date: 2024/3/4 8:57* @Version 1.0*/
public class ExaminationManagementSystem {public static void main(String[] args) {//定义成绩数组int[] scores = {10, 20, 30, 40, 50, 60, 70, 80};//获取扫描器Scanner sc = new Scanner(System.in);while (true) {System.out.println("---------------------");System.out.println("欢迎来到黑马考试管理系统");System.out.println("1. 查看成绩");System.out.println("2. 查看最高分");System.out.println("3. 查看最低分");System.out.println("4. 查看平均分");System.out.println("5. 查看不及格人数");System.out.println("6. 退出");System.out.println("---------------------");int input = sc.nextInt();//管理系统编号录入switch (input) {case 1:System.out.println("学生成绩为: ");viewScore(scores);System.out.println();break;case 2:System.out.println("最高分为: " + viewMaxScore(scores));break;case 3:System.out.println("最低分为: " + viewMinScore(scores));break;case 4:System.out.println("平均分为: " + viewAvgScore(scores));break;case 5:System.out.println("不及格人数为: " + viewnoPass(scores));break;case 6:System.out.println("感谢您的使用, 再见");System.exit(0);break;}}}/*** 求平均数* @param scores* @return*/private static double viewAvgScore(int[] scores) {int sum=scores[0];for (int i = 0; i < scores.length; i++) {sum+=scores[i];}return sum/scores.length*1.0;}/*** 不及格人数* @param scores* @return*/private static int viewnoPass(int[] scores) {int   noPass=0;for (int i = 0; i < scores.length; i++) {if (scores[i]<60){noPass++;}}return noPass;}/*** 查看最低分* @param arr* @return*/private static int viewMinScore(int[] arr) {int min = arr[0];//最低分for (int i = 0; i < arr.length; i++) {if (arr[i] < min) {min = arr[i];}}return min;}/*** 查看最高分** @param arr*/private static int viewMaxScore(int[] arr) {int max=arr[0];for (int i = 0; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}/*** 查看成绩** @param arr*/private static void viewScore(int[] arr) {System.out.print("[ ");for (int i = 0; i < arr.length; i++) {if ((arr.length - 1) == i) {System.out.print(arr[i]);} else {System.out.print(arr[i] + ", ");}}System.out.print(" ]");}
}

拔高题

1、定义一个方法,在键盘上接收10个整数,然后对10个整数进行按照从小到大的顺序放入一个数组中返回

public class Demo01 {public static void main(String[] args) {System.out.println("请在键盘上输入十个整数");int[] sortedArr = sort(inputNumber()); // 对输入的数组进行排序arrWrite(sortedArr);//打印输出10个排列好的数组}private static int[] sort(int[] arr) {// 冒泡排序算法for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j]>arr[j+1]){// 交换 arr[j] 和 arr[j + 1]int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}return arr;}/*** 排列数组*/private static void arrWrite(int[] arr) {System.out.print("[ ");for (int i : arr) {System.out.print(i);if (i != arr[arr.length-1]) {System.out.print(", ");}}System.out.println(" ]");}/*** 获取十个数组内容* @return*/private static int[] inputNumber() {Scanner sc = new Scanner(System.in);int[] arr = new int[10];for (int i = 0; i < arr.length; i++) {System.out.println("请输入第" + (i + 1) + "个数字: ");arr[i] = sc.nextInt();}return arr;}
}

2、定义一个方法,接收一个数组,然后将数组中的最大值与第一个元素交换,最小值与最后一个元素交换,然后将数组返回

public class Demo02 {public static void main(String[] args) {//假定 一个数组int[] inputArray = {3, 5, 1, 2, 4};int[] modified=swapArray(inputArray);//接受数组printArray(modified);}private static void printArray(int[] arr) {if (arr == null) {System.out.println("Array is null.");return;}System.out.print("[");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]);if (i < arr.length - 1) {System.out.print(", ");}}System.out.println("]");}/*** 将数组中的最大值与第一个元素* 交换,最小值与最后一个元素交换* @param arr* @return*/private static int[] swapArray(int[] arr) {//定义最大值和最小值int maxArr=arr[0];int minArr=arr[0];//定义最大和最小索引int minIndex=0;int maxIndex=0;// 遍历数组,找到最大值和最小值及其索引for (int i = 0; i < arr.length; i++) {if (arr[i]>maxArr){maxArr=arr[i];maxIndex=i;}if (arr[i]<minArr){minArr=arr[i];minIndex=i;}}// 交换最大值和第一个元素int temp=arr[0];arr[0]=maxArr;arr[maxIndex]=temp;// 交换最小值与最后一个元素temp=arr[arr.length-1];arr[arr.length-1]=minArr;arr[minIndex]=temp;return arr;}
}

3、定义一个方法,接收两个整数,计算并返回两个整数的最大公约数

public class Demo03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入两个整数");System.out.print("第一个整数: ");int a= sc.nextInt();System.out.print("第二个整数: ");int b=sc.nextInt();System.out.println("最大公约数是: " + greatestCommonDivisor(a,b));sc.close();//关闭扫描器}private static int greatestCommonDivisor(int num1, int num2) {// 使用欧几里得算法计算最大公约数while (num2!=0){int temp=num2;num2=num1%num2;num1=temp;}return num1;}
}

4、定义一个方法,接收一个整数数组,请判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false

public class Demo04 {public static void main(String[] args) {//假定有一个数组int[] array = {1, 3, 5, 2, 7, 9, 4, 11, 13};boolean flag = hasConsecutiveOdds(array);System.out.println("数组中是否存在连续三个奇数: " + flag);}/*** 遍历数组查询数组是否存在三个连续奇数** @param arr* @return*/private static boolean hasConsecutiveOdds(int[] arr) {if (arr == null || arr.length < 3) {//数组元素为空或者不满足三个元素return false;}for (int i = 0; i < arr.length - 2; i++) {if (odds(arr[i]) && odds(arr[i + 1]) && odds(arr[i + 2])) {return true;}}return false;}/*** 判断此数是否是奇数** @param num* @return*/private static boolean odds(int num) {return num % 2 != 0;}
}

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

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

相关文章

算法 -【找出字符串的可整除数组】

找出字符串的可整除数组 题目示例1示例2 分析代码 题目 给你一个下标从 0 开始的字符串 word &#xff0c;长度为 n &#xff0c;由从 0 到 9 的数字组成。另给你一个正整数 m 。word 的可整除数组 div 是一个长度为 n 的整数数组&#xff0c;并满足&#xff1a; 如果 word[0…

【JavaScript 漫游】【034】AJAX

文章简介 本篇文章为【JavaScript 漫游】专栏的第 034 篇文章&#xff0c;对浏览器模型的 XMLHttpRequest 对象&#xff08;AJAX&#xff09;的知识点进行了总结。 XMLHttpRequest 对象概述 浏览器与服务器之间&#xff0c;采用 HTTP 协议通信。用户在浏览器地址栏键入一个网…

Java项目源码基于springboot的家政服务平台的设计与实现

大家好我是程序员阿存&#xff0c;在java圈的辛苦码农。辛辛苦苦板砖&#xff0c;今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现&#xff0c;项目源码以及部署相关请联系存哥&#xff0c;文末附上联系信息 。 项目源码&#xff1a;Java基于spr…

虚拟机镜像iso下载

MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)

CANalyzer使用_00 概述

计划写一个专题&#xff0c;该专题主要介绍CANalyzer的使用&#xff0c;每次文档计划写一个点&#xff0c;自己不累&#xff0c;别人看着也不累&#xff0c;并且方便拓展。本文作为专题的开篇主要介绍下CANalyzer软件的背景&#xff0c;软件界面等信息。 1 软件介绍 CANalyze…

FastAPI 学习笔记

FastAPI 学习笔记 0. 引言1. 快速开始2. 升级示例代码 0. 引言 在 Python 这个充满活力的生态系统中&#xff0c;FastAPI 应运而生&#xff0c;它是一个现代的、快速的 Web 框架&#xff0c;专注于构建 RESTful API。 无论你是一名有经验的 Python 开发人员&#xff0c;还是一…

MyBatis注解开发详解

MyBatis注解开发详解 一、前言 MyBatis是一个优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原始类型、接口和Java POJO&#xff08;Plain…

HTTP/2、HTTP/3对HTTP/1.1的性能改进和优化

HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f; 性能上的改进&#xff1a; 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。 支持管道&#xff08;pipeline&#xff09;网络传输&#xff0c;只要第一个请求发出去了&#xff0c;不必等其回来&#xff0c;就可以…

Purple Pi OH鸿蒙开发板7天入门OpenHarmony开源鸿蒙教程【五】

在完成了Purple Pi OH大部分的接口测试之后&#xff0c;紧接着就是一个充满挑战的任务——利用SDK来编译生成我们自己的镜像文件。通过这一过程&#xff0c;不仅能够让你获得一个可在真实硬件上运行的系统镜像&#xff0c;更重要的是&#xff0c;它让你对OpenHarmony系统的构建…

C++中的内存管理方式

一、C内存管理方式简介 C语言中的内存管理方式在C中可以继续使用&#xff0c;但是在有些地方就无能为力&#xff0c;而且使用起来比较麻烦。因此C中引入了自己的内存管理方式&#xff0c;通过new和delete操作符进行动态内存管理。 二、new语法 new可以申请1个或多个空间&…

Android自定义binder实现进程间通信

通过binder建立进程间通信&#xff0c;主要分为两步&#xff1a; 1. 定义一个binder的服务&#xff08;在androidManifest.xml中声明&#xff09;接受远端请求。 服务中创建一个binder实例&#xff0c; 在接收到客户端的连接时&#xff0c;向请求方返回回binder的引用。重写Bi…

Qt - 信号和槽

目录 一、信号 二、槽 三、信号和槽的使用 (一) 连接信号和槽 (二) 自定义槽 (三) 通过 Qt Creator生成信号槽代码 (四) 自定义信号 四、带参数的信号和槽 五、信号与槽的断开 六、Qt4版本信号与槽的连接 (一) Qt4版本信号与槽连接的优缺点 一、信号 在 Qt 中&…

【简单模拟】第十二届蓝桥杯省赛第二场C++ B组《特殊年份》(C++)

【题目描述】 今年是 2021 年&#xff0c;2021 这个数字非常特殊&#xff0c;它的千位和十位相等&#xff0c;个位比百位大 1&#xff0c;我们称满足这样条件的年份为特殊年份。 输入 5 个年份&#xff0c;请计算这里面有多少个特殊年份。 【输入格式】 输入 5 行&#xff…

​Ubuntu20.04 创建新的用户​

1、了解Linux目录结构 推荐看一下&#xff1a;https://www.runoob.com/linux/linux-system-contents.html Linux支持多个用户进行操作的&#xff0c;这样提高了系统的安全性&#xff0c;也可以多人共用一个系统&#xff0c;不过要注意的是系统中安装的软件相关路径&#xff0…

CubeMX使用教程(5)——定时器PWM输出

本篇我们将利用CubeMX产生频率固定、占空比可调的两路PWM信号输出 例如PA6引脚输出100Hz的PWM&#xff1b;PA7引脚输出500Hz的PWM&#xff0c;双路同时输出 我们还是利用上一章定时器中断的工程进行学习&#xff0c;这样比较方便 首先打开CubeMX对PA6、PA7进行GPIO配置 注&a…

Mixamo动画素材导入UE5的最简单方法

一、Mixamo素材 官网&#xff1a;https://www.mixamo.com/ Mixamo是Adobe公司出品的免费动画库&#xff0c;可商用。软件分为characters(角色&#xff09;、Animations&#xff08;动画)两个部分。 二、辅助工具MIXAMO CONVERTER 官网&#xff1a;https://terribilisstudio…

Android中MultiDex优化

MultiDex基本思路 当一个Dex文件太肥的时候(方法数目太多、文件太大)&#xff0c;在打包或在安装或运行apk也会出问题。 解决方法就是将这个硕大的Dex文件拆分成若干个小的Dex文件。 刚好一个ClassLoader可以有多个DexFile。 MultiDex主要性能瓶颈 解压缩和Dex优化&#xff08;…

架构师面试问与答

你如何评估和选择合适的分布式缓存方案以提高系统性能&#xff1f; 我会考虑使用分布式缓存系统&#xff0c;如Redis、Memcached等&#xff0c;并根据系统需求和负载情况选择合适的缓存方案。 请简要描述一下你对服务发现和服务注册的理解以及在软件架构中的应用。 服务发现和…

SplitFunctions (BOLT) - 优化阅读笔记

将函数拆分成更小的代码片段&#xff0c;从而执行更激进的代码段重排的优化 在文件 bolt/lib/Passes/SplitFunctions.cpp 相关选项释义默认-split-all-cold尽可能多的分离冷的基本块false-split-align-threshold对齐参数2-split-functions主要功能选项, 分离函数到代码片段fa…

Codeql复现CVE-2018-11776学习笔记

基本使用 1、首先下载struts2漏洞版本源码&#xff1a; https://codeload.github.com/apache/struts/zip/refs/tags/STRUTS_2_3_20 2、构建codeql数据库&#xff08;构建失败文末有解决办法&#xff09;&#xff1a; codeql database create ~/CodeQL/databases/struts2-2.3.…