Java(七)

数组操作

遍历数组

1.数组的遍历可以使用for循环来实现;

使用for循环遍历时,定义int i=0,因为索引是从0 开始的,继续循环的条件是 i<array.length,因为当i=array.length时,i的索引超出了范围。

2.数组的循环还可以使用for each 直接迭代数组的每个元素;

在for(int n : array)中,变量n是直接获取到array的元素,并不是索引。

直接打印数组变量,得到的是数组在JVM中的地址;

打印数组时用Arrays.toString()

public class Test {
    public static void main(String[] args){
        int[] array = {1,3,45,22,89};
        System.out.println(Arrays.toString(array));
    }
}

练习:请按倒叙遍历数组,并打印

public class Test {
    public static void main(String[] args){
        int[] arr = {1,3,45,22,89};
        for (int i = arr.length-1; i>=0; i--){
            System.out.println(arr[i]);
        }
    }
}

数组排序

java内置了数组的排序功能,Arrays.sort()

public class Test {
    public static void main(String[] args){
        int[] arr = {1,3,45,22,89,0,77,90};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
//对数组进行降序排序
public
class Test { public static void main(String[] args){ int[] arr = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 }; //排序前: // System.out.println(Arrays.toString(arr)); //排序后 for (int i = 0; i < arr.length - 1; i ++){ for (int j = 0; j < arr.length-i-1; j ++){ if (arr[j] < arr[j+1]){ int tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } } System.out.println(Arrays.toString(arr)); if (Arrays.toString(arr).equals("[96, 89, 73, 65, 50, 36, 28, 18, 12, 8]")){ System.out.println("测试成功"); }else { System.out.println("测试失败"); } } }

常用的算法排序有:冒泡排序、插入排序、快速排序等

冒泡排序使用两层for循环实现排序;

交换两个变量的值需要借助一个临时变量;

对数组排序会直接修改数组本身;

可以直接使用java标准库提供的Arrays.aort()对数组进行排序;

多维数组

二维数组

二维数组就是数组的数组

定义一个二维数组:int[][] ns = {

              {1,2,3,4};

              {5,6,7,8,9};

              {10,11,12,13,14,15}

              };

访问二维数组中的某个元素:ns[row][col];

要打印一个二维数组,可以用for双层循环,也可以用Java标准库提供的Arrays.deepToString();

public class Test {
    public static void main(String[] args){
        int[][] arr = {
                {1,2,3},
                {4,5,6,7},
                {8,9,10,11,12}
        };
        System.out.println(arr.length);//输出二维数组的长度
        //for 循环打印二维数组
        for (int[] n : arr
             ) {
            for (int nn : n
                 ) {
                System.out.println(nn);
            }
        }
        //Arrays.deepToDtring()输出二维数组
        System.out.println(Arrays.deepToString(arr));
    }
}

三维数组

三维数组就是二维数组的数组

eg:

 int[][][] arr = {
                {
                        {1,2,3},
                        {4,5,6,7},
                        {8,9,10,11,12}
                },
                {
                        {13,14},
                        {15,16}
                },
                {
                        {17,18},
                        {19,20}
                }
        };

访问三维数组中的某个元素:arr[0][1][1]

练习:使用二维数组可以表示一组学生的成绩,请计算所有学生的平均分

public class Test {
    public static void main(String[] args){
        // 用二维数组表示的学生成绩:
        int[][] scores = {
                { 82, 90, 91 },
                { 68, 72, 64 },
                { 95, 91, 89 },
                { 67, 52, 60 },
                { 79, 81, 85 },
        };
        double sum = 0;
        int num = 0;
        for (int[] arr : scores
             ) {
            for (int a : arr
                 ) {
                sum = sum + a;
                num ++;
            }
        }
        double average = sum/num;
        System.out.printf("average:%.3f",average);
        if (Math.abs(average - 77.733333) < 0.000001){
            System.out.println("测试成功");
        }else{
            System.out.println("测试失败");
        }
    }
}

备注:

二维数组就是数组的数组,三维数组就是二维数组的数组;

多维数组的每个数组的数组元素长度都不相同;

打印多维数组可以使用Arrays.deepTotring();

最常见的多维数组是二维数组,访问二维数组的一个元素用array[row][col]。

命令行参数

命令行参数类型是String[] 数组;

命令行参数,由jvm接收用户输入,并传给main方法;

如何解析命令行参数,由程序自己实现。

 

posted @ 2021-03-10 17:23  小小日常  阅读(79)  评论(0编辑  收藏  举报