一、选择题
1.多选题:以下关于环境变量的描述正确的有哪些?
A. 在系统环境变量中正确配置JAVA安装路径到path环境变量,就可以在命令行窗口使用java命令了
B. 在命令行窗口输入的命令会先到当前目录查找,再到Path环境变量下查找
C. 系统环境变量可以被任意程序读取到
D. 在环境变量中配置好JAVA_HOME后,就可以在命令行窗口执行java命令了
正确答案:BC
2.多选题:下面满足驼峰命名规则的标识符有哪些?
A. updateTime
B. Helloworld
C. czjy
D. HelloWorld
正确答案:AD
3.多选题:下面说法正确的是?
A. 布尔值中只能定义true或者false
B. 字符中有且只能定义一个字符
C. 空值使用null表示
D. 字符串中可以定义任意的内容
正确答案:ABCD
4.多选题:下面哪些是属于Java中的关键字?
A. class
B. String
C. void
D. public
正确答案:ACD
5.多选题:下面哪些是属于标识符的要求?
A. 严格区分大小写
B. 不能是关键字
C. 不能以数字开头
D. 一定要有字母组成
正确答案:ABC
6.单选题:下面关于变量和数组的介绍,说法错误的是?
A. 一个变量只能存放一个数据
B. 遇到批量数据的存储和操作时,使用使用数组
C. 数组可以存放同种类型的多个值
D. 有了变量,就可以不用数组了
正确答案:D
7.单选题:静态初始化数组时,若元素个数超过指定长度,会()?
A. 运行时报错
B. 没有影响
C. 编译报错
D. 自动截断
正确答案:A
8.多选题:下面关于数组动态初始化描述正确的是?
A. 数组动态初始化的时候需要确定数组存储的类型
B. 定义数组时先不存入具体的元素值
C. 数组动态初始化的时候需要确定数组的长度
D. 以上说法都是错误的
正确答案:ABC
9.单选题:于动态初始化数组后元素的默认值说法错误的是?
A. 小数默认赋值为0.0
B. 引用数据类型默认赋值为null
C. boolean类型默认赋值为true
D. 整数默认赋值为0
正确答案:C
boolean 类型的正确默认值是 false
10.多选题:对于静态初始化的数组,以下说法正确的是?
A. 可以直接指定数组的元素
B. 不需要指定数组长度
C. 不需要指定类型
D. 元素值可以在初始化时任意指定,只要类型统一并且正确即可
正确答案:ABD
11.单选题:下面数组静态初始化正确的是?
A. int arr; arr = new double[]{1.1, 2.2};
B. int arr = new int[]{1.1, 2.2};
C. int[] arr = new int[3]{1, 2. 3};
D. int[] arr = {1, 2, 3, 4};
正确答案:D
12.多选题:静态初始化数组时,元素值可以是?
A. 常量
B. 以上都可以
C. 表达式的值
D. 变量
正确答案:ABCD
二、编码题
1.创建一个Java程序,在程序中分别输出整数10,小数5.333,字符10,字符串小明,布尔值true以及空常量null。如果程序中出错,请把错误的代码注释掉
程序执行,在控制台输出效果
public class demo4 {
public static void main(String[] args) {
System.out.println(10);
System.out.println(5.333);
// System.out.println('10');
System.out.println("小明");
System.out.println(true);
// System.out.println(null);
}
}
2.在电脑上创建一个文本文档(注意,不要使用IDEA)。创建一个Java程序,添加main方法,使用输出语句打印出如下的效果
程序执行,在控制台输出效果
{@}
/|\
|知识点
Java程序的开发流程【创建Java程序,编写Java程序,编译写好的Java程序,运行生成的class文件】
System.out.println();输出语句,程序可以把括号中的内容输出在控制台
"\"的特殊意义。如果在字符串中要表示一个 "\" ,就需要写成 "\\"
思路分析
1.创建一个文本文档,重命名,Test02.java。
2.编写代码
3.ctrl + s ,保存编写好的内容
4.打开命令行提示符窗口,编译已经写好的Java程序。格式 javac Test02.java。
5.编译之后,得到一个Test02.class文件。运行,得到的class文件。格式 java Test02 答案
public class Test02{
public static void main(String[] args){
System.out.println("{@}");
System.out.println("/|\\");
System.out.println(" |");
}
}3.键盘录入年份,判断是否是闰年。闰年规则:能被4整除但不能被100整除,或能被400整除的年份。
package com.homework;
import java.util.Scanner;
/**
* @Description Demo5
* 键盘录入年份,判断是否是闰年。闰年规则:能被4整除但不能被100整除,或能被400整除的年份。
* @Author liqingchuan
* @Date 2026-01-26
*/
public class Demo5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份,将判断是否为闰年:");
int year = sc.nextInt();
System.out.println(((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)?"是闰年":"不是闰年");
}
}4.创建一个程序,让用户输入一个以秒为单位的时间大小,并将其转换为小时、分钟和秒的形式输出。
package com.homework;
import java.util.Scanner;
/**
* @Description Demo6
* 创建一个程序,让用户输入一个以秒为单位的时间大小,并将其转换为小时、分钟和秒的形式输出。
* @Author liqingchuan
* @Date 2026-01-26
*/
public class Demo6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入秒数:");
int time = sc.nextInt();
int hour = time / 3600;
int minute = time / 60 % 60;
int second = time % 60;
System.out.println("当前时间为:" + hour + "时" + minute + "分" + second + "秒");
}
}5.BMI(Body Mass Index,身体质量指数)是用来评估体重是否适宜的一个常用指标。
package com.homework;
import java.util.Scanner;
/**
* @Description Demo7
* BMI(Body Mass Index,身体质量指数)是用来评估体重是否适宜的一个常用指标。
* 它通过体重(以千克为单位)除以身高(以米为单位)的平方来计算。BMI的正常范围通常定义为18.5到24.9(kg/m²)。具体来说:
* - BMI小于18.5被认为是体重过低;
* - BMI在18.5到25(不包括)之间被认为是正常范围;
* - BMI在25到30(不包括)之间被认为是超重;
* - BMI在30及以上被认为是肥胖。
* 请键盘录入人的体重和身高,计算并输出他的体重是过低、正常、超重还是肥胖。
* @Author liqingchuan
* @Date 2026-01-26
*/
public class Demo7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入身高(米):");
double height = sc.nextDouble();
System.out.println("请输入体重(千克):");
double weight = sc.nextDouble();
double BMI = weight / (height * height);
String result = (BMI < 18.5) ? "体重过低" :
(BMI < 25) ? "体重正常" :
(BMI < 30) ? "超重" : "肥胖";
System.out.printf("你的BMI值为:%.2f%n", BMI);
System.out.println("体重评估结果:" + result);
}
}6.使用 Scanner 从键盘录入两个整数,然后计算并输出这两个数的和、差、积、商、余数。要求处理除数为 0 的异常情况,避免程序崩溃,不使用格式化输出,不保留小数点。
参考答案
import java.util.Scanner;
public class ArithmeticCalculator {
public static void main(String[] args) {
// 创建Scanner对象用于键盘录入
Scanner scanner = new Scanner(System.in);
// 提示并录入第一个整数
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
// 提示并录入第二个整数
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
// 计算并输出和、差、积
System.out.println("两数之和:" + (num1 + num2));
System.out.println("两数之差:" + (num1 - num2));
System.out.println("两数之积:" + (num1 * num2));
// 计算商和余数(处理除数为0的情况)
if (num2 != 0) {
// 商:直接使用整数除法(不保留小数)
int quotient = num1 / num2;
System.out.println("两数之商(整数除法):" + quotient);
// 余数:仅整数可用
int remainder = num1 % num2;
System.out.println("两数之余数:" + remainder);
} else {
System.out.println("错误:除数不能为0,无法计算商和余数!");
}
// 关闭Scanner
scanner.close();
}
}7.使用 Scanner 录入一个总秒数(整数),将其拆分为时、分、秒并输出。要求使用复合赋值运算符(/=、%=)简化计算逻辑,不使用格式化输出。
参考答案
import java.util.Scanner;
public class SecondsConverter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 录入总秒数
System.out.print("请输入总秒数(整数):");
int totalSeconds = scanner.nextInt();
// 备份原始值(避免计算中覆盖)
int temp = totalSeconds;
// 拆分小时:1小时=3600秒
int hours = temp / 3600;
temp %= 3600; // 等价于 temp = temp % 3600,剩余秒数
// 拆分分钟:1分钟=60秒
int minutes = temp / 60;
temp %= 60; // 剩余秒数
// 最终剩余的秒数
int seconds = temp;
// 输出结果(移除格式化,改用普通拼接)
System.out.println(totalSeconds + " 秒 = " + hours + " 时 " + minutes + " 分 " + seconds + " 秒");
scanner.close();
}
}8.程序执行流程:for循环-求水仙花数
package com.itheima._02循环结构;
/**
* @Description Demo022
* @Author songyu
* @Date 2026-01-29 15:26
*/
public class Demo025 {
public static void main(String[] args) {
/*
* 需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
1。水仙花数是一个三位数
2。水仙花数的个位、十位、百位的数字立方和等于原数
* */
//1、定义一个for循环从“100一直到999”
for (int i = 100; i <= 999; i++) {
//2、在循环中获取每个数的个位、十位、百位数字。
//个位: 数字 % 10
int g = i % 10;
//十位: 数字/10%10
int s = i / 10 % 10;
//百位: 数字/100
int b = i / 100;
//3、使用if判断:个位、十位、百位的数字立方和是否等于原数,等于则输出该数据。
// if(g*g*g + s*s*s + b*b*b == i){ Ctrl+D复制当前行粘贴到下一行 ,Ctrl+/注释当前行
// 另一种求指定数据的几次幂API:Math.pow(数据,设置次幂)
if(Math.pow(g,3) + Math.pow(s,3) + Math.pow(b,3) == i){
// System.out.println(i+" ");//输出数据后面“\n”进行文本内容换行
System.out.print(i+" ");//输出数据后面没有换行
}
}
}
}9.嵌套循环案例:九九乘法表
package com.itheima._02循环结构;
/**
* @Description Demo029
* @Author songyu
* @Date 2026-01-29 17:30
*/
public class Demo029 {
public static void main(String[] args) {
//目标:控制台打印9*9乘法表
//外层循环行数
for (int row = 1; row <= 9; row++) {
String str ="";//用于拼接一行所有列的数据
//内层循环列输出
for (int col = 1; col <= row; col++) {
str += col+" * "+row+" = "+(col*row)+"\t"; // \t一个制表符,一个tab键的格式化,相当于2个空格
//循环第一行: 1 * 1 = 1
//循环第二行第一列: 1 * 2 = 2
//循环第二行第二列: 2 * 2 = 4
}
//到这里一行所有列拼接完成
System.out.println(str);
}
}
}10.综合案例:猜数字
package com.itheima._03综合案例;
import javax.swing.*;
import java.util.Random;
import java.util.Scanner;
/**
* @Description Demo031
* @Author songyu
* @Date 2026-01-29 19:04
*/
public class Demo031 {
public static void main(String[] args) {
/*
* 需求:随机生成一个1-100(不包括)之间的整数,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
* */
//1.生成随机数
//方式1:创建随机对象Random, Random random = new Random()
// random.nextInt(100), 生成0~100,包含0,不包含100,
// 要求生成1~100, random.nextInt(100)+1 就可以是1~100
// 要求生成65~90, random.nextInt(26)+65 公式:random.nextInt(最大值-最小值+1)+最小值
// random.nextInt(1,100),生成1~100之间,包含1,不包含100,最推荐,这个api只有jdk17及以上版本才有
Random random = new Random();
System.out.println(random.nextInt(100));
System.out.println(random.nextInt(1,100));
//方式2:Math.random() 生成0~1随机数,包含0,不包含 1
// 要求生成 1~100,(int)(Math.random()*100+1)
// 要求生成65~90, (int)(Math.random()*26+65)
System.out.println(Math.random());
//获取生成的1~100之间的随机数
int number = random.nextInt(1, 100);
Scanner sc = new Scanner(System.in);
int count = 0;
while(true){
count++;
System.out.println("请输入您要猜的数字:");
int num = sc.nextInt();
if(num>number){
System.out.println("猜大了");
}else if(num<number){
System.out.println("猜小了");
}else{
System.out.println("猜对了,一共猜了"+count+"次");
break;//return也可以
}
}
}
}11.键盘录入月份数字(1-12),使用switch-case输出对应季节:
12、1、2月:冬季
3-5月:春季
6-8月:夏季
9-11月:秋季
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int month = sc.nextInt();
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3: case 4: case 5:
System.out.println("春季");
break;
case 6: case 7: case 8:
System.out.println("夏季");
break;
case 9: case 10: case 11:
System.out.println("秋季");
break;
default:
System.out.println("输入错误");
}
}
}12.根据程序员的工龄(整数)给程序员涨工资(整数),程序员的工龄和基本工资通过键盘录入
涨工资的条件如下:
[10-15) +20000
[5-10) +10000
[3~5) +5000
[1~3) +3000
运行程序:
请输入作为程序员的你的工作的工龄:10
请输入作为程序员的你的基本工资为:60000
"您目前工作了10年,基本工资为 60000元, 应涨工资 20000元,涨后工资 80000元"
public class Demo03 {
public static void main(String[] args) {
//1.创建键盘录入Scanner类的对象
Scanner sc = new Scanner(System.in);
//2.获取键盘录入的代表工龄的整数数字,保存int变量gl中
System.out.println("请输入作为程序员的你的工作的工龄:");
int gl = sc.nextInt();
//3.获取键盘录入的代表基本工资的整数数字,保存int变量jbgz中
System.out.println("请输入作为程序员的你的基本工资为:");
int jbgz = sc.nextInt();
//4.定义int变量yzgz,用来记录应涨工资的数量
int yzgz = 0;
//5.使用if语句第三种格式判断工龄的范围,记录应涨工资
if (gl >= 10 && gl < 15) {
yzgz = 20000;
} else if (gl >= 5 && gl < 10) {
yzgz = 10000;
} else if (gl >= 3 && gl < 5) {
yzgz = 5000;
} else if (gl >= 1 && gl < 3) {
yzgz = 3000;
} else {
yzgz = 0;
}
//6.根据题目需求输出结果数据
System.out.println("您目前工作了" + gl + "年,基本工资为 "
+ jbgz + "元, 应涨工资 " + yzgz + "元,涨后工资 " + (jbgz + yzgz) + "元");
}
}13.数组的遍历
定义整型数组
int[] arr = {100,19,99,88,200};
需求1:求和
需求2:查找88在的索引位置
需求3:求最值
遍历
输出:
求和结果:506
找到了88数据的索引下标,下标为:3
最大值:200
最小值:19package com.itheima._02数组动态初始化;
/**
* @Description Demo022
* @Author songyu
* @Date 2026-01-30 15:03
*/
public class Demo022 {
public static void main(String[] args) {
//目标:数组的遍历
//1.定义整型数组
int[] arr = {100,19,99,88,200};
//需求1:求和
int sum = 0;
//需求2:查找88在的索引位置
int index = -1;
//需求3:求最值
//分析:求最大值实现思路,定义max赋值为数组第一个元素的值,再与其他元素依次比对,每次比对结果max存储较大的值,所有元素都比对完成max就是最大值
//分析:求最小值实现思路,定义min赋值为数组第一个元素的值,再与其他元素依次比对,每次比对结果min存储较小的值,所有元素都比对完成min就是最小值
//定义max,min
int max = arr[0],min = arr[0];
//2.遍历
for (int i = 0; i < arr.length; i++) {
//System.out.println(arr[i]);
sum += arr[i];
//查找88在的索引位置
if(arr[i]==88){
index = i;
}
//求最大
if(i!=0 && max<arr[i]){
max = arr[i];
}
//求最小
if(i!=0 && min>arr[i]){
min = arr[i];
}
}
System.out.printf("求和结果:%d\n",sum); // %d 整型数字占位符
if(index>-1){
System.out.printf("找到了88数据的索引下标,下标为:%d\n",index);
}else{
System.out.println("没有找到88数据");
}
System.out.printf("最大值:%d\n",max);
System.out.printf("最小值:%d\n",min);
}
}14.请用面向对象编程的方式,存储两个学生的信息(姓名,语文成绩,数学成绩),并提供方法打印出每个学生的总成绩和平均成绩。
package com.itheima._04面向对象编程案例;
/**
* @Description Student
* @Author songyu
* @Date 2026-01-30 16:59
*/
public class Student {
String name;//姓名
double chinese;//语文成绩
double math;//数学成绩
/**
* 打印总成绩
*/
public void printTotalScore(){
System.out.printf("[%s]学生各科成绩总分:%.2f\n",name,chinese+math);
// %.2f %f代表小数 .2格式化小数2位
}
/**
* 打印平均成绩
*/
public void printAverageScore(){
System.out.printf("[%s]学生各科平均成绩:%.2f\n",name,(chinese+math)/2);
}
}15.将数字1-10保存到一个长度为10的一个整数数组中 定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复) 给新数组的元素赋值 求新数组所有元素的和
程序执行,在控制台输出效果【结果不唯一】
新数组的元素是:
1 7 7
新数组的元素和是:
15import java.util.Arrays;
import java.util.Random;
public class Test06 {
public static void main(String[] args) {
//1. 先定义一个静态数组arr1,用于存放1-10
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//2. 我们再定义一个动态数组arr2,用于存放3个元素
int[] arr2 = new int[3];
//3. 遍历arr2,给里面的每个元素赋值
//3.1 先创建随机数对象
Random r = new Random();
for (int i = 0; i < arr2.length; i++) {
//3.2 用随机数获取一个范围在[0,9]之间的数字,作为索引,从arr1中获取对应的值
int index = r.nextInt(arr1.length);
//3.2 把获取到的数据赋值给新数组arr2的元素
arr2[i] = arr1[index];
}
System.out.println("arr2的值是:" + Arrays.toString(arr2));
//4. 先定义一个变量sum,用于记录总和
int sum = 0;
//5. 遍历数组,获取每一个元素
for (int i = 0; i < arr2.length; i++) {
//5.1 求和
sum += arr2[i];
}
//6. 循环结束,sum即为总和
System.out.println("总和为:" + sum);
}
}16.定义一个长度为6的数组,使用随机数的知识,生成[1,9]的数据,保存到数组中。要求,保存到数组中的数据不能重复
程序执行,在控制台输出效果【结果不唯一】
数组的元素是:
1 8 6 5 9 3public class Test07 {
public static void main(String[] args) {
//1. 先定义长度为6的动态数组
int[] arr = new int[6];
//2. 创建一个随机数对象
Random r = new Random();
//3. 遍历数组,给数组的每一个元素进行赋值
for (int i = 0; i < arr.length; ) { //这里不能直接写i++,我们需要存入数据之后,索引才+1
//3.1 先生成一个随机数number
int number = r.nextInt(1, 10);
//3.2 需要判断number是否存在于数组前面元素
//需要定义一个标记,用来表示循环执行完之后的结果
boolean flag = false; //默认number是不存在于数组中
//3.2.1 重新遍历数组,获取数组前面几项
for (int j = 0; j < i; j++) {
//3.2.1.1 用当前的元素和number进行比较,如果有相同的,就代表存在
if(number == arr[j]){
flag = true;//改变标记的值,设置为true,代表number存在于数组中
break;
}
}
//3.2.2 如果循环结束之后,都没有相同的,则代表不存在。我们就需要把当前的number存入到数组中
if(!flag){ //代表没有
arr[i] = number;
i++;
}
}
System.out.println("元素为:" + Arrays.toString(arr));
}
}17. 定义一个方法判断年份是否是闰年(能被4整除但不能被100整除,或能被400整除)
public class Demo01 {
public static void main(String[] args) {
//调用方法,判断年份是否是闰年
boolean result = isLeapYear(2024);
System.out.println(result); // 输出 true
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
}18. 定义一个方法,判断一个整数是否是质数(只能被1和自身整除)。
public class Demo02 {
public static void main(String[] args) {
System.out.println(isPrime(17)); // 输出 true
}
//定义方法,参数是要判断的整数,返回值true表示是质数,false表示不是质数
public static boolean isPrime(int num) {
if (num <= 1) {
return false; //小于等于1的数不是质数,直接返回false
}
for (int i = 2; i <= num/2; i++) { //例如:num=17,只需要判断1~8能否整除17就行了,另一半就不用判断了。
if(num % i == 0) {
return false;
}
}
//如果都不能整除,就表示是质数,返回true。
return true;
}
}19.定义一个方法,接收一个字符,分别打印出其英文字母、空格、数字和其它字符的个数。
public class Demo04 {
public static void main(String[] args) {
printCharNumber("adhfu988 98af 2@$");
}
/*
定义一个方法,接收一个字符,分别统计出其英文字母、空格、数字和其它字符的个数。
*/
public static void printCharNumber(String s){
//1 定义四个变量,分别保存英文字母、空格、数字还是其它字符的个数
int letterCount=0; //保存英文字母的个数
int spaceCount=0; //保存空格的个数
int numCount=0; //保存数字的个数
int otherCount=0; //保存其它字符的个数
//2 将字符串转换成字符数组
char[] chs = s.toCharArray();
//3 遍历字符数组,获取字符串的每一个字符
for (int i = 0; i < chs.length; i++) {
char ch = chs[i];
//3 判断字符是 :英文字母、空格、数字还是其它字符,对应保存数量的变量+1
if((ch >='a' && ch <='z') || (ch >='A' && ch <='Z')){
letterCount++;
letter+=ch;
}else if(ch ==' '){
spaceCount++;
space+=ch;
}else if(ch>='0' && ch<='9'){
numCount++;
}else{
otherCount++;
}
}
//5 打印结果
System.out.println("英文字母的个数:"+letterCount);
System.out.println("空格的个数:"+spaceCount);
System.out.println("数字的个数:"+numCount);
System.out.println("其它字符的个数:"+otherCount);
}
}20.全参构造器在set存在设置数据录入逻辑时将会优先调用set方法

21.银行账户管理
需求:
创建
BankAccount类,包含私有属性:账号(id)、余额(balance)添加静态属性
totalAccounts记录总账户数实现存款(deposit)、取款(withdraw)方法,取款时余额不足需提示
通过构造器实现开户自动生成账号(格式:BA0001,BA0002...)
在main方法中创建3个账户测试功能
考查知识点: static关键字、构造器、方法封装
public class BankAccount {
private String id;
private double balance;
private static int totalAccounts = 0;
//自我拓展
/*public BankAccount() {
// 第一步:先校验账户上限,最多9999个
if (totalAccounts >= 9999) {
System.out.println("开户失败!系统账户上限为9999个,无法新增账户");
return; // 终止构造,不再生成账号
}
// 第二步:已开户数自增(从1开始,对应BA0001)
totalAccounts++;
// 第三步:格式化生成账号:BA + 4位补零数字
// %04d:不足4位补0,总长度4位,完美实现0001~9999
this.id = String.format("BA%04d", totalAccounts);
}*/
public BankAccount() {
totalAccounts++;
this.id = "BA000" + totalAccounts;
}
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
}
}
public void withdraw(double amount) {
if(amount > balance) {
System.out.println("余额不足!");
} else {
balance -= amount;
}
}
// getter方法省略...
}
public class Demo03{
public static void main(String[] args) {
BankAccount a1 = new BankAccount();
a1.deposit(1000);
a1.withdraw(500);
BankAccount a2 = new BankAccount();
a2.deposit(2000);
a2.withdraw(3000); // 触发余额不足提示
System.out.println("总账户数:" + BankAccount.totalAccounts);
}
}22.数学工具类
需求:
创建
MathUtils工具类包含静态方法:计算数组最大值、最小值、总和、平均值
所有方法接收int数组参数并返回计算结果
禁止实例化该类(构造器私有化)
考查知识点: static方法、工具类设计、私有构造器
public class MathUtils {
private MathUtils() {} // 禁止实例化
//定义方法,求数组中所有元素之和
public static int getMax(int[] arr) {
int max = arr[0];
for(int i=0; i<arr.length; i++) {
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
//定义方法,求数组中所有元素的平均值
public static double getAvg(int[] arr) {
//调用getSum方法,对数组中的元素求和
int sum = getSum(arr);
//求平均值并返回
return sum*1.0/arr.length;
}
}
public class Demo04{
public static void main(String[] args) {
int[] arr = {5, 3, 9, 1, 7};
System.out.println("最大值:" + getMax(arr));
System.out.println("平均值:" + getAvg(arr));
}
}23.电影信息展示系统

package com.itheima._08综合案例电影信息展示系统;
/**
* @Description Movie
* @Author songyu
* @Date 2026-02-03 10:04
*/
public class Movie {
private String name; //电影名称
private double score; //评分
private String director; //导演
public Movie() {
}
public Movie(String director, String name, double score) {
this.director = director;
this.name = name;
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Movie{" +
"director='" + director + '\'' +
", name='" + name + '\'' +
", score=" + score +
'}';
}
}package com.itheima._08综合案例电影信息展示系统;
/**
* @Description 定义MovieSystem处理电影数据逻辑
* @Author songyu
* @Date 2026-02-03 10:07
*/
public class MovieSystem {
//定义存储全部电影的数组,全局一份
private static Movie[] movies;
//初始化电影
static{
// 1. 创建Movie数组,长度为5,用于存储5个电影对象
movies = new Movie[6];
// 2. 创建5个热门电影对象,并赋值给数组元素
// 电影1:《肖申克的救赎》
movies[0] = new Movie("弗兰克·德拉邦特", "肖申克的救赎", 9.7);
// 电影2:《霸王别姬》
movies[1] = new Movie("陈凯歌", "霸王别姬", 9.6);
// 电影3:《阿甘正传》
movies[2] = new Movie("罗伯特·泽米吉斯", "阿甘正传", 9.5);
// 电影4:《泰坦尼克号》
movies[3] = new Movie("詹姆斯·卡梅隆", "泰坦尼克号", 9.5);
// 电影5:《千与千寻》
movies[4] = new Movie("宫崎骏", "千与千寻", 9.4);
movies[5] = new Movie("黑马", "黑马程序员霸王", 9.9);
}
//定义展现所有电影的方法
public static void showAllMovies(){
System.out.println("显示全部电影信息如下:");
System.out.println("序号\t\t电影名字");
for (int i = 0; i < movies.length; i++) {
System.out.printf("%d\t\t%s\n",i+1,movies[i].getName());
}
}
//定义根据电影名称展现电影详情
public static void showDetailByName(String name){
//定义记录存储找到符合的电影数量
int number = 0;
//1.根据name查找电影数组中是否含有这部电影
for (int i = 0; i < movies.length; i++) {
//介绍api: 字符串.contains("包含的字符串") 返回boolean 返回true代表包含,否则不包含
if(movies[i].getName().contains(name)){
//2.如果含有展现详情数据
number++;
System.out.println("找到符合的第"+number+"部电影详情信息如下:");
System.out.println("电影名称:"+movies[i].getName());
System.out.println("电影评分:"+movies[i].getScore());
System.out.println("电影导演:"+movies[i].getDirector());
}
}
//3.如果没有显示“您搜索的电影不存在。。。”
if(number==0){
System.out.println("您搜索的电影不存在。。。");
}
}
}package com.itheima._08综合案例电影信息展示系统;
import java.util.Scanner;
/**
* @Description Demo081
* @Author songyu
* @Date 2026-02-03 10:04
*/
public class Demo081 {
public static void main(String[] args) {
//用户交互逻辑实现
Scanner sc = new Scanner(System.in);
//死循环
while(true) {
//展现用户操作的菜单,1是展现全部电影信息,2.根据电影名称查询电影详情.3退出
System.out.println("================欢迎来到黑马影院================");
System.out.println("1、展现全部电影信息");
System.out.println("2、根据电影名称查询电影详情");
System.out.println("3、退出");
System.out.println("=============================================");
System.out.println("请输入您操作的序号(1~3):");
//获取用户输入的序号
int number = sc.nextInt();
//序号操作匹配
switch (number){
case 1 -> MovieSystem.showAllMovies();
case 2 -> {
System.out.println("请输入搜索的电影名称:");
String name = sc.next();
MovieSystem.showDetailByName(name);
break;
}
case 3 -> {
System.out.println("感谢观看,欢迎下次光临");
return;
}
default -> System.out.println("无效菜单,重新输入");
}
}
}
}