for循环、嵌套循环、break的讲解、while和do...while...的讲解、数组的讲解
1.for循环:
固定次数循环,应用率高。
循环的选择规则:
1)先看固定次数还是不固定次数:
1.1)固定次数------------------------直接for循环
1.2)不固定次数:
1.2.1)要素1与要素3相同时--------直接do...while循环
1.2.2)要素1与要素3不同时--------直接while循环
找最大值的算法:(for循环示例)
int[] arr = {23,45,67,3};
找最大值算法:
1)假设第1个元素为最大值:
int max = arr[0];
2)遍历剩余元素,将剩余元素与max进行对比,
若剩余元素大于max,则修改max的值为较大的
for(int i=1;i<arr.length;i++){
if(arr[i]<max){
max=arr[i];
}
}
max=23/45/67
2.break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
3.三种循环结构的更佳适用情况:
1)while:要素1与要素3不同时,首选while
2)do...while:要素1与要素3相同时,首选do...while
3)for:固定次数循环,应用率最高
4、嵌套循环
1)循环套循环,一般多行多列时使用,外层控制行,内层控制列。
2)执行规则:外层循环走一次,内层循环走所有次。
3)建议:循环层数越少越好,能用一层就不用两次,能用两次就不用三层,若需要必须通过三层以上的循环来解决,说明设计有问题。
4)Java中break只能跳出一次循环
某种条件下直接跳出多层循环,只是你自己想当然的想法,是错误的。
break跳出循环的讲解:
for(int i=1;i<=100;i++){
for(int j=1;j<=200;j++){
for(int k=1;k<=300;k++){
if(boolean){
break;---------跳出k层
}
System.out.println("aaa");
}
}
}
5、程序=算法+数据结构
1)算法:解决问题的流程/步骤(顺序、分支、循环)
2)数据结构:将数据按照某种特定的结构来保存。(数怎么存)
设计合理的/良好的数据结构会到导致良好的算法
6.数组:
1)是一种数据类型(引用类型)
2)相同数据类型元素的集合
3)数组的定义:
int[] arr = new int[10];
4)数组的初始化:
int[] arr = new int[4]; //0,0,0,0
int[] arr = {1,4,5,7}; //1,4,5,7
int[] arr = new int[]{1,4,5,7}; //1,4,5,7
int[] arr = new int[]{1.0,4,5.2,7}; //编译错误,类型不统一
int[] arr;
arr = {1,4,5,7}; //编译错误,此方式只能声明的同时初始化
arr = new int[]{1,4,5,7}; //正确
5)数组的访问:
5.1)通过(数组名.length)来获取数组的长度(元素的个数)
int[] arr = new int[4];
System.out.println(arr.length); //4
5.2)通过下标/索引来访问数组中的元素
下标从0开始,最大到(数组的长度-1)
int[] arr = new int[3];
arr[0] = 100; //给arr中第1个元素赋值为100
arr[1] = 200; //给arr中第2个元素赋值为200
arr[2] = 300; //给arr中第3个元素赋值为300
arr[3] = 400; //数组下标越界异常
System.out.println(arr[arr.length-1]); //输出arr中最后一个元素的值
6)数组的遍历:
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = 100;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
今日实战:
实战练习1:(数组的练习)
1)声明整型数组arr1,包含20个元素
2)声明整型数组arr2,并直接将元素赋值为2,5,8
声明整型数组arr3,给arr3先new再直接赋值为2,5,8
3)声明整型数组arr,包含3个元素
给arr第1个元素赋值100,给arr第2个元素赋值200
给arr第3个元素赋值300
arr[3] = 400;--------------???
输出arr的长度,输出arr最后一个元素的值(下标不能写死)
4)创建类MaxOfArray,在main()中:
4.1)声明整型数组arr,包含10个元素
4.2)遍历arr,给每个元素赋值为0到99之间的随机数
4.3)遍历arr,输出每个元素的值
数组的练习1:(数组的代码)
//1.数组的定义:
int[] arr1 = new int[10];
//2.数组的初始化:
int[] arr2 = new int[3]; //0,0,0
int[] arr3 = {2,4,5}; //2,4,5
int[] arr4 = new int[]{2,4,5}; //2,4,5
int[] arr5;
//arr5 = {2,4,5}; //编译错误,此方式只能声明的同时初始化
arr5 = new int[]{2,4,5}; //正确
//3.数组的访问:
int[] arr = new int[3];
System.out.println(arr.length); //3
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
//arr[3] = 400; //数组下标越界异常
System.out.println(arr[arr.length-1]);
//4.数组的遍历:
int[] as = new int[10];
for(int i=0;i<as.length;i++){
as[i] = (int)(Math.random()*100);
}
for(int i=0;i<as.length;i++){
System.out.println(as[i]);
}
}
}
实战练习2:(九九乘法表练习)for循环练习
public class MultiTable {
public static void main(String[] args) {
for(int num=1;num<=9;num++){ //行
for(int i=1;i<=num;i++){ //列
System.out.print(i+"*"+num+"="+i*num+"\t");
}
System.out.println(); //换行
}
}
}
实战练习3:(求数组元素的最大值练习)
public class MaxOfArray {
public static void main(String[] args) {
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = (int)(Math.random()*100);
System.out.println(arr[i]);
}
int max = arr[0]; //假设第1个元素为最大值
for(int i=1;i<arr.length;i++){ //遍历剩余元素
if(arr[i]>max){ //若剩余元素比max大
max=arr[i]; //则修改max的值为较大的
}
}
System.out.println("最大值为:"+max);
}
}