day04

本文围绕Java编程基础展开,介绍了随机数生成、循环控制语句(continue、break)、数组初始化与复制、栈和堆的存储特点、身份证验证程序、异常处理、冒泡排序及其优化,还阐述了方法的概念、语法结构、使用和调用方式。

import java.util.Random;
Random r= new Random();
int num= r.nextInt(100); //产生的数据在0到100之间,包括0,不包括100,其实里面的100是随机的。
2.
for(int i=0;i<10;i++){
if(i%2==0){
continue;
}
System.out.println(i);
}
输出结果为1,3,5,7,9
continue:跳过循环体中的剩余语句而进行下一次循环

3.嵌套中的循环:
嵌套中的循环,一般多行多列的时候,外层控制行,内层控制列;
执行规则:外层循环走一次,内层的走所有;
建议:循环层数越少越好,能用一层解决的尽量用一层,如果你写的程序必须使用到三层以上的循环,要考虑是不是你的程序设计有问题
break:只能跳出一层循环。
4.
数组初始化:
动态初始化:在初始化的时候,只定义了数组的长度,通过系统来决定数组的初始化值;int [] arr2=new int[3];
静态初始化:在初始化的时候,在初始化的时候,指定了每一个初始化的值,由系统决定数组的长度; int [] arr3= new int[]{1,3,5,7};
5
arr={1,2,3};错的 arr=new int [] {1,2,3}; 对的
6
栈:存诸的是局部变量;局部变量就是定义在方法体中的变量;使用完毕后立即释放。
7.
堆:存储的是new出来的对象;每一个对象都是有地址值的;每一个对象都是有默认值的;
byte short int long 默认值为0
float double 是0.0
char 是 ‘\u0000’
boolean false
引用数据类型 null
使用完毕后,由垃圾回收器在空闲的时候回收

  1. 身份证的最后一位验证
    倒数第二位代表性别
    7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
    省份证前17位 对应相乘,然后相加,用和%11
    0 1 2 3 4 5 6 7 8 9 10
    1 0 x 9 8 7 6 5 4 3 2

对应程序
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
//用来存放身份证前17位
int[] cards=new int[17];
//所需验证的系数
int[] data={7 ,9 ,10, 5 ,8 ,4 ,2 ,1 ,6 ,3, 7 ,9, 10, 5, 8 ,4 ,2};
int[] date1=new int[17];
char []code ={‘1’,‘0’,‘x’,‘9’,‘8’,‘7’,‘6’,‘5’,‘4’,‘3’,‘2’};
Scanner sc=new Scanner(System.in);
for(int i=0;i<cards.length;i++){
System.out.println(“请输入身份证的第”+(i+1)+“位”);
cards[i]=sc.nextInt();
}
for(int i=0;i<cards.length;i++){
sum+=cards[i]*data[i];
}
System.out.println(“最后一位:”+code[sum%11]);

}

9 异常
数组下标越界异常;ArrayIndexOutOfBoundsException
空指针异常:NullPointerException
异常机制:try-------catch
10 数组的复制
Arrays.copyof(src,length), 要在JDK1,6版本以上使用
System.arraycopy(src, srcPos, dest, destPos, length);//
src原数组;srcPos:原数组的开始的复制的位置;dest:目标数组;destPos:目标数组的开始复制的位置;length:复制的 长度
javaAPI提供的,底层是用c++写的,所以速度非常快,比for()循环实现数组的拷贝效率要高,推荐使用。

11.冒泡排序
public static void main(String[] args) {
// TODO Auto-generated method stub
int []a={1,3,2,55,23,4};
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
//两种循环和Arrays.toString(a) 三种方法对数组的输出
System.out.print(“第”+(i+1)+“轮”+" “);
//System.out.println(Arrays.toString(a));
for(int k:a){
System.out.print(k+” “);
}
System.out.println();
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+” “);
}
}
优化后的冒泡排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
int []a={1,3,2,55,23,4};
boolean isSorted;
for(int i=0;i<a.length-1;i++){
isSorted=true;//假设剩下的元素已经全部排序好了
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
//一旦进行数组元素的交换,那么剩余的元素的元素是没有进行排序好的
isSorted=false
}
}
if(isSorted){
break;
}
System.out.print(“第”+(i+1)+“轮”+” “);
//System.out.println(Arrays.toString(a));
for(int k:a){
System.out.print(k+” “);
}
System.out.println();
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+” ");
}
}

}
12. 方法:
概念:封装了一段特定独立的业务逻辑的功能;
方法尽可能是独立的,让一个方法去干一件事;
方法也是可以被反复的重复去调用;
较少代码的重复,有利于代码的后期维护;
同时能够减少开发团队的成本,提高效率。
2.语法结构;
修饰词 返回值类型 方法名 (参数列表){
方法体;//具体的业务逻辑功能
return 返回值;
}
修饰词:public static
返回值类型:用于限定返回值的具体的类型
方法名:为了我们调用的时候方便,起的名字
参数列表:(参数类型 参数名,参数类型 参数名2…)
参数类型:用于限定调用方法时传入传入的数据类型
参数名:用于接收调用方法时传入的数据的变量
3. 方法的使用
明确方法是否有返回值;方法是否有参数列表;
方法是否有参数列表
4. 方法的调用
单独去调用
输出调用,有意义的
赋值调用
return; //编译错误,必须返回一个值
return “1234”; //编译错误,返回值的类型必须进行

内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)与多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习与启发因子优化,实现路径的动态调整与多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算与参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练与融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法与神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑与实时避障等多目标协同优化;③为智能无人系统的自主决策与环境适应能力提供算法支持; 阅读建议:此资源结合理论模型与MATLAB实践,建议读者在理解ACO与MLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。
### 苍穹外卖 Day04 课程代码与教程 #### 新增套餐功能解析 在苍穹外卖项目的第四天学习中,重点在于理解和实现新增套餐的功能。对于新手开发者而言,理解业务逻辑是关键所在。通过模仿之前学过的新增菜品流程来构建新的功能模块是一个有效的策略[^1]。 ```java // 假设这是用于处理新增套餐的部分Java伪代码示例 public class PackageService { public void addPackage(Package pkg) { // 验证输入参数的有效性 validate(pkg); // 查询并设置分类信息 Category category = getCategoryByType(pkg.getType()); pkg.setCategory(category); // 将新创建的套餐保存到数据库中 packageRepository.save(pkg); } private Category getCategoryByType(String type){ // 实现根据类型获取对应分类的方法 return categoryRepository.findByType(type); } } ``` 此部分涉及到了如何依据`type`属性查询相应的分类,并将其关联至即将加入系统的套餐对象上。这一步骤确保了每个套餐都能被正确地归类管理。 #### 数据批量操作接口说明 当涉及到多个购物项的同时插入时,则需要用到类似于`ShoppingCartMapper.insertBatch()`这样的方法定义。该函数接收一个包含若干个待插入记录的对象列表作为参数,在内部完成一系列必要的预处理工作之后执行实际的数据入库动作[^2]。 ```sql -- SQL语句示意:批量向shopping_cart表中添加多条记录 INSERT INTO shopping_cart (user_id, product_id, quantity) VALUES (?, ?, ?), (?, ?, ?), ... ; ``` 以上SQL片段展示了怎样一次性提交多组数据给目标表格;具体应用场合下可根据实际情况调整字段名及其对应的值。 #### 关联实体间的关系描述 为了更好地维护系统内的各类资源之间的联系,采用了一套合理的外键机制设计模式。例如,在表示“菜品”的实体结构里包含了两个重要属性:一个是用来唯一识别每道菜目的`id`编号;另一个则是指向其所属类别(即菜单板块)的`category_id`引用关系[^4]。 ```json { "id": 1, "name": "宫保鸡丁", "description": "...", "price": 28.5, "categoryId": 3 // 表明这条记录属于ID为3的那个分类之下 } ``` 上述JSON格式的例子清晰地表达了单个菜品实例与其上级分类间的隶属情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值