嵌套循环
格式
外层循环{
内层循环{
}
}
嵌套(Nesting)循环(Loop)
1、几重循环看的是循环嵌套的层级,而不是循环的个数;
2、在语法上循环嵌套的层次是可以无限的,但是在现实开发
当中,最多达到三重循环;嵌套层次过多会导致程序流程 控制力度下降,算法可读性降低;
3、嵌套循环的关键,在于搞清楚循环执行的顺序。
外层循环执行1次,内层循环执行1圈;内层循环可以访问外层循环的循环控制变量;外层不能访问内层;
4、循环控制变量命名,最外层的用i,第二层用j,第三层用k,
依次类推,这是“约定俗成的规范”;
同层循环可以使用同命的循环控制变量;
5、break只能跳出本层循环
数据的声明语法
数据类型[]数组名 = {数据1,数据2···}
集合:把一组元素批量放在一起,进行集中合并操作。
数组是集合中一种结构,且是最简单原始的一种。几乎所有的编程语言,在语法设计的时
候直接自带数组。
数组在结构上的特点:
1、只能存放同一数据类型的元素;
2、所有元素是存放在连续内存地址空间中的;
3、数组空间大小一旦确定,不可更改(不能加也不能减)。
数组申明的语法:
数据类型[] 变量名; 这里的变量名就是数组的名字 -- 标准
数据类型 变量名[]; 这是Java为照顾C程序员早期提供的兼容语法 -- 非标准
数组初始化语法一:已知要放入数组的元素个数和值是多少
数组初始化语法二:只知道要放入数组的元素个数
采用第二种初始化语法的时候,数组中的每个元素都会被自动初始化。
其中:
1、如果元素是基本数据类型,那么赋初始值0
int的就是0, doule/float就是0.0 char就是ASCII码为0的字符 boolean就是false
2、如果元素是引用数据类型,那么赋初始值null
如何操作数组当中的元素?
语法: 数组名[下标]
下标 相当于数组元素在数组中的编号。这个编号无需我们指定,而是
数组在生成的时候就自带了的,英文"index"
数组的下标都是从0开始的,然后到 数组长度 - 1。
我们完全可以把 数组名[下标] 这种语法 当成是一个变量来使用,可以取出它的值,
也可以给它赋值。如果在访问数组元素的时候没有正确指定下标,那么编译不会报错,
但运行时会报异常(ArrayIndexOutofBoundsException - 数组下标越界异常)。
异常一旦发生,我们又没有学习使用异常处理机制,那么我们的程序会在这句报异常的
代码处中断掉。
所以,在处理数组下标的时候一定要做好控制。
为了对最大下标进行良好的控制,Java中的数组提供了一个叫做length的属性,可以
获取该数组的长度。
经验:在循环操作数组元素的时候,循环结束的条件不要写常量,
写成"**数组.length**"
例题:输入数值比较大小,再将数值放入数组之中
public class Practise {
public static void main(String[] args) {
int[] array = {12,23,34,45,56,67,78,89}
System.out.println("请输入一个整数:")
Scanner scan = new Scanner(System.in)
int num = scan.nextInt()
1、找出num应该在array当中的位置?
int index = array.length
for(int i = 0
if(array[i] > num){
index = i
break
}
}
2、由于数组大小不可变,所以原数组不可能放入第9个数,只能申明新的数组
int[] newArray = new int[array.length + 1]
3、从原数组向新数组拷贝数据
3-1、把index之前的数据,按原位置从原数组拷贝到新数组
for(int i = 0
newArray[i] = array[i]
}
3-2、把index以及它之后的所有数据,按原位置+1的方式从原数组拷贝到新数组
for(int i = index
newArray[i + 1] = array[i]
}
3-3、把num放到新数组的index位置
newArray[index] = num
4、让原数组变量指向新数组
array = newArray
测试
for(int i = 0
System.out.print(array[i] + "\t")
}
}
}
***字符串的toCharArray方法,可以把一个字符串转成一个char[]
然后可以利用数组语法,依次访问操作里面的每一个字符