JAVA11 求最小公倍数

循环:
//计算m、n中较大者
int max=Math.max(m,n);
//从max到m*n之间找最小公倍数
for(int i=max;i<=m*n;i++){
//如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
if(i%m==0&&i%n==0){
return i;
}
}
return -1;
}
int max=Math.max(m,n);与int max=m>n ? m:n;等效

JAVA12 小球走过路程计算

float sum=0;
for(int i=0;i<n;i++){
sum+=h;//加上落下的距离
h=h/2;//弹起距离缩短一半
if(i==n-1){
System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum));
}
sum+=h;//加上弹上去的距离
}

JAVA13 求平均数

double sum=0;
int n=0,i=0;
while((i=scan.nextInt())>0){
sum+=i;
n++;
}
System.out.println(String.format("%.2f",sum/n));

JAVA14 判断质数

int c=0;
for(int i=1;i<number+1;i++){
if(number%i==0){
c++;
}
}
return c>2 ? false:true;
精简后:
int i=2;
for(;number%i!=0;i++);
return i==number ? true:false;
JAVA15 计算整数位数

if(num<=0) System.out.print(num);
int c=0;
while(num>0){
num/=10;
c++;
}
System.out.print(c);

JAVA16 数组遍历

min=ary[0];
max=ary[0];
for(int i=0;i<ary.length;i++){
if(ary[i]>max){
max=ary[i];
}
if(ary[i]<min){
min=ary[i];
}
}
System.out.println(max+" "+min);
max = ary[0];
min = ary[0];
for(int i=0;i<ary.length;i++){
max=Math.max(ary[i],max);
min=Math.min(ary[i],min);
}
System.out.println(max+" "+min);
1. max = Math.max(ary[i], max);
- 作用:从当前数组元素 ary[i] 和当前最大值 max 中,取较大值并更新到 max 变量里。
- 原理:Math.max(a, b) 是 JavaScript 内置方法,接收两个参数,返回其中数值更大的那个。
- 遍历场景逻辑:初始化时,max 一般设为 -Infinity(负无穷),这样数组的第一个元素必然会成为初始最大值;后续每遍历一个元素,都和当前 max 比较,把更大的值存进去,最终得到整个数组的最大值。
2. min = Math.min(ary[i], min);
- 作用:从当前数组元素 ary[i] 和当前最小值 min 中,取较小值并更新到 min 变量里。
- 原理:Math.min(a, b) 和 Math.max 正好相反,接收两个参数,返回其中数值更小的那个。
- 遍历场景逻辑:初始化时,min 一般设为 Infinity(正无穷),这样数组的第一个元素必然会成为初始最小值;后续每遍历一个元素,都和当前 min 比较,把更小的值存进去,最终得到整个数组的最小值。
JAVA17 数组倒转

int i=0,t;
while(i<arr.length/2){
t=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=t;
i++;
}
int left=0,right=arr.length-1;
while(left<right){
int temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right–;
}

JAVA18 二维数组求和

for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
sum+=arr[i][j];
}
}
for(int[] arr1 : arr){
for(int arr2 : arr1){
sum=sum+arr2;
}
}
return sum;
- 外层循环:for(int[] arr1 : arr)
- arr 是一个二维数组(int[][] 类型)。
- 每次迭代时,arr1 会指向 arr 中的一个一维数组元素。
- 内层循环:for(int arr2 : arr1)
- 遍历当前一维数组 arr1,每次迭代时,arr2 会指向 arr1 中的一个 int 类型元素。
- 整体作用:把二维数组 arr 中的所有元素累加,最终返回总和 sum。
for (元素类型 变量名 : 数组/实现Iterable接口的集合) {
// 循环体,每次迭代时,变量会自动指向当前元素
}
增强 for 循环(Enhanced for Loop),也叫 foreach 循环,是 JDK 5 引入的语法,专门用来简化数组或集合的遍历操作。
JAVA19 修改Data类的定义

JAVA19 修改Data类的定义


class Data {
private int x;
private int y;
public Data(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
private仅能在当前类内部访问,外部类(包括子类、同包类)都无法直接调用
public可以被任何类访问,无论是否在同一个包、是否是子类
- public是 “大家都能用”,private是 “只有自己能用”,第二段代码用 public 才是能正常用的,第一段用 private 等于锁死了用不了;
- this.就是 “分清重名的东西”,没加 this. 的话,代码会 “认不出” 该给谁赋值,加了才会把值给对;
- 第一段代码又用 private 又没加 this.,又锁门又给错东西,等于白写;第二段又用 public 又加 this.,才是又能用又没错的写法
this. 的差别(就比分清 “两个重名的人”)
咱们生活里常遇到 “重名” 的情况 —— 比如孙子叫 “小明”,邻居家小孩也叫 “小明”,奶奶喊 “小明过来”,俩人都可能过来,分不清。这时候奶奶说 “这个小明(咱们家的)过来”,就只叫到你了 ——this.就是代码里的 “这个”,专门分清 “重名的东西”
this.就一个核心用:当两个东西名字一样时,加个 this.,就知道指的是 “自己家的那个”,不会弄混。
JAVA20 验证年龄

public void setAge(int age){
if(age<0){
this.age=0;
}
else if(age>200){
this.age=200;
}else{
this.age=age;
}
}
public int getAge(){
return age;
}
封装的核心价值
- 数据安全:避免外部直接操作属性导致的非法数据(比如这里的年龄异常值)。
- 低耦合 / 易维护:内部逻辑修改不影响外部代码,降低了代码的依赖风险。
- 隐藏复杂度:外部只需关注「怎么用」,不需要关注「内部怎么实现」,简化了交互成本。
通过方法控制访问逻辑代码中的setAge()方法就是封装的核心体现:
对外提供安全接口getAge()和setAge()是类对外暴露的「访问接口」:

![P11246 [GESP202409 六级] 小杨和整数拆分-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108100631-6af049a75855c-220x150.png)
![打卡信奥刷题(3678)用C++实现信奥题 P12274 [蓝桥杯 2024 国 Python B] 设计-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108053830-6af00ad6bdf8d-220x150.png)

