二维数组--例题

公司年销售额求和

某公司按照季度和月份统计的数据如下:单位(万元)

第一季度:22,66,44

第二季度:77,33,88

第三季度:25,45,65

第四季度:11,66,99

键盘录入每个月的销售额,按照季度去输入

 

import java.util.Scanner;

public class Array2Test2 {

    public static void main(String[] args) {

        //定义一个二维数组将数据存起来

        int[][] saleArray = {{22, 66, 44}, {77, 33, 88}, {25, 45, 65}, {11, 66, 99}};

        //定义一个变量接收总销售额

        int sumSale = 0;

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

            for (int j = 0; j < saleArray[i].length; j++) {

                sumSale += saleArray[i][j];

            }

        }

        System.out.println("该公司一年的销售额为:" + sumSale + "万元。");

        System.out.println("=========键盘录入每个月的销售额,按照季度去输入========");

        //创建键盘录入对象

        Scanner sc = new Scanner(System.in);

        //定义一个二维数组

        int[][] saleArray2 = new int[4][3];

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

            for (int j = 0; j < saleArray2[i].length; j++) {

                System.out.print("请输入第" + (i + 1) + "季度的第" + (j + 1) + "月的销售额:");

                int saleNum = sc.nextInt();

                saleArray2[i][j] = saleNum;

            }

            System.out.println("第" + (i + 1) + "季度的销售额录入完毕!");

        }

        int sumSale1 = 0;

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

            for (int j = 0; j < saleArray2[i].length; j++) {

                sumSale1 += saleArray2[i][j];

            }

        }

        System.out.println("该公司一年的销售额为:" + sumSale1 + "万元。");

    }

}

 

打印杨辉三角形(行数可以键盘录入)

        1
        1 1
        1 2 1
        1 3 3  1
        1 4 6  4  1
        1 5 10 10 5 1
        ...

分析规律:

1、任意一行的第一列和最后一列都是1

2、从第三行开始,每个数据都是它上一行本列与上一行前一列之和

实现步骤:

1、首先定义一个二维数组,行数为n,键盘录入n,行数与列数是相同的,也是n

2、首先给二维数组中的每一个一维数组的第一列和最后一列赋值1

3、按照我们发现的规律,给其他元素进行赋值

      从第三行开始,每个数据都是它上一行本列与上一行前一列之和

4、遍历输出这个二维数组

 

import java.util.Scanner;

public class Array2Test4 {

    public static void main(String[] args) {

        //创建键盘录入对象

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入您想要的杨辉三角的行数n:");

        int rowNum = sc.nextInt();

        //定义一个二维数组

        int[][] pascalTriangle = new int[rowNum][rowNum];

        //给二维数组中的每一个一维数组的第一列和最后一列赋值1

        //获取到每一个一维数组,通过索引给第一个元素和最后一个元素进行赋值

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

            pascalTriangle[i][0] = 1;

            pascalTriangle[i][i] = 1;

        }

        //按照我们发现的规律,给其他元素进行赋值

        //从第三行开始,每个数据都是它上一行本列与上一行前一列之和

        for(int i=2;i<pascalTriangle.length;i++){

            for(int j=1;j<=i-1;j++){

                pascalTriangle[i][j] = pascalTriangle[i-1][j] + pascalTriangle[i-1][j-1];

            }

        }

        System.out.println("该杨辉三角如下:");

        //遍历输出这个二维数组

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

            //针对获取到的每一个一维数组进行遍历

            for(int j=0;j<pascalTriangle[i].length;j++){

                if(j==0){

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

                }else if(pascalTriangle[i][j]==0){

                    continue;

                }else if(j==pascalTriangle[i].length-1){

                    System.out.print(pascalTriangle[i][j]);

                }else {

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

                }

            }

            System.out.println();

        }

    }

}

 


数组获取最值(获取数组中的最大值最小值)

1、定义一个数组,存储一些元素(使用静态初始化)

2、首先在数组中任意找一个元素进行比较,默认一开始它就是最大值

      一般来说,我们取第一个(选择排序)

3、遍历其他的元素与第一个元素进行比较,如果找到了更大的元素,

      就将它取代,如果比它小,不管它继续和后面比较

4、输出最大值

public class ArrayDemo1 {

    public static void main(String[] args) {

        //定义一个数组(静态初始化的方式)

        int[] arr = {3, 2, 312, 41, 31, 324, 14, 12, 344, 1, 65, 534};

        //从数组取出任意一个元素进行比较(一般情况下取第一个,默认是最大值)

        int max = arr[0];

        //拿着这个元素,与其他的元素进行比较

        for (int i = 1; i < arr.length; i++) {

            if (arr[i] > max) {

                max = arr[i];

            }

        }

        //输出比较结束后的最大值

        System.out.println("数组中元素的最大值为:" + max);

        //使用方法改进一下

        System.out.println("=======方法获取数组最值===========");

        int maxNum = getMaxNum(arr);

        System.out.println("数组中元素的最大值为:" + maxNum);

        int minNum = getMinNum(arr);

        System.out.println("数组中元素的最小值为:" + minNum);

    }




/*

获取数组中的最大值

返回值类型:int

参数:int[]

*/


    public static int getMaxNum(int[] array){

        //从数组取出任意一个元素进行比较(一般情况下取第一个,默认是最大值)

        int max = array[0];

        //拿着这个元素,与其他的元素进行比较

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

            if (array[i] > max) {

                max = array[i];
            }

        }

        return max;

    }


/*

获取数组中的最小值

返回值类型:int

参数列表:int[]

*/

    public static int getMinNum(int[] array){

        //从数组取出任意一个元素进行比较(一般情况下取第一个,默认是最大值)

        int min = array[0];

        //拿着这个元素,与其他的元素进行比较

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

            if (array[i] < min) {

                min = array[i];

            }

        }

        return min;

    }

}

 


数组元素逆序 (就是把元素对调)



public class ArrayDemo2 {

    public static void main(String[] args) {

        //定义一个数组

        int[] arr = {1,2,3,4,5,6,7,8,9};

        //将第0索引位置的元素与length-1索引位置的元素进行交换位置

        //将第1索引位置的元素与length-1-1索引位置的元素进行交换位置

        //将第2索引位置的元素与length-1-2索引位置的元素进行交换位置

        //直到length/2

        //此时就停止交换


        //将第0索引位置的元素与length-1索引位置的元素进行交换位置

//        int temp = arr[0];

//        arr[0] = arr[arr.length-1];

//        arr[arr.length-1] = temp;
//
//        //将第1索引位置的元素与length-1-1索引位置的元素进行交换位置

//        int temp1 = arr[1];

//        arr[1] = arr[arr.length-1-1];

//        arr[arr.length-1-1] = temp;
//
//        //将第2索引位置的元素与length-1-2索引位置的元素进行交换位置

//        int temp2 = arr[2];

//        arr[2] = arr[arr.length-1-2];

//        arr[arr.length-1-2] = temp;

        System.out.println("逆序之前:");   //123456789

        printArray(arr);

        //逆序

        int[] niXuResult2 = niXu(arr);

        System.out.println("逆序之后:");   //987654321

        printArray(niXuResult2);

        int[] niXuResult = niXu2(arr);

        printArray(niXuResult);

    }

 /*

 返回值类型:void

参数列表:int[]

*/

    public static void printArray(int[] array){

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

            if(i==array.length-1){

                System.out.println(array[i]+"]");

            }else if(i==0){

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

            }else {

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

            }

        }

    }

/*

实现数组的逆序

返回值类型:int[]

参数列表:int[]

*/

    public static int[] niXu(int[] array){

        //用for循环实现交换

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

            int temp = array[i];

            array[i] = array[array.length-1-i];

            array[array.length-1-i] = temp;

        }

        return array;

    }

/*

使用两个指针实现数组的逆序

返回值类型:int[]

参数列表:int[]

*/

    public static int[] niXu2(int[] array){

        //使用两个指针实现

        for(int start=0,end=array.length-1;start<=end;start++,end--){

            int temp = array[start];

            array[start] = array[end];

            array[end] = temp;

        }

        return array;

    }

}

 

 

数组查表法(根据键盘录入索引,查找对应星期)

 

分析:

        1、创建数组,存储星期一到星期日的7个元素

        2、键盘录入1-7某个数字

        3、输出对应的星期

import java.util.Scanner;

public class ArrayDemo3 {

    public static void main(String[] args) {

        //定义数组

        String[] week = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};

        //创建键盘录入对象

        Scanner sc = new Scanner(System.in);

        while (true){

            System.out.println("请输入1-7中某一数字:");

            int number = sc.nextInt();

            if(1<=number & number<=7){

                System.out.println("对应的星期是:"+week[number-1]);

            }else if(number==0){

                System.out.println("结束输入");

                break;

            }else {

                System.out.println("您输入的数有误,请重新输入。");

            }

        }

    }

}

 

 


数组元素查找(查找指定元素第一次在数组中出现的索引)

键盘录入一个数,去数组中查找

3,13,21,3214,3,12,3,24,3,212,3,1,21,3124,21,3

 

import java.util.Scanner;

public class ArrayDemo4 {

    public static void main(String[] args) {

        //定义一个数组(静态初始化的方式)

        int[] arr = {3, 13, 21, 3214, 3, 12, 3, 24, 3, 212, 3, 1, 21, 3124, 21, 3};

        //创建键盘录入对象

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入您要查找的数字:");

        int number = sc.nextInt();

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

            if (arr[i] == number) {

                System.out.println(number + "数第一次出现在数组中的索引为:" + i);

                break;

            }

            if (i == arr.length - 1) {

                System.out.println("您输入的数:" + number + "在数组中没有找到!");

            }

        }

    }

}
posted @ 2021-11-30 21:13  赤兔胭脂小吕布  阅读(139)  评论(0编辑  收藏  举报