嵌套循环和数组

189 阅读4分钟

嵌套循环

格式

    外层循环{

    内层循环{

    }

}

嵌套(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; i < array.length; i++){

                if(array[i] > num){

                    index = i;

                    break;

                }

            }

        2、由于数组大小不可变,所以原数组不可能放入第9个数,只能申明新的数组

            int[] newArray = new int[array.length + 1];

        3、从原数组向新数组拷贝数据

        3-1、把index之前的数据,按原位置从原数组拷贝到新数组

            for(int i = 0; i < index; i++){

                        newArray[i] = array[i];

                    }

        3-2、把index以及它之后的所有数据,按原位置+1的方式从原数组拷贝到新数组

             for(int i = index; i < array.length; i++){

                    newArray[i + 1] = array[i];

                }

        3-3、把num放到新数组的index位置

             newArray[index] = num;

        4、让原数组变量指向新数组

             array = newArray;

        测试

             for(int i = 0; i < array.length; i++){

                 System.out.print(array[i] + "\t");

                }

            }

        }

***字符串的toCharArray方法,可以把一个字符串转成一个char[]

   然后可以利用数组语法,依次访问操作里面的每一个字符