4-二维数组-JAVA源码

题目:
1.公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
2.打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

  1. 第一行一个1 ,第二行2个1
  2. 从第三行开始,每一行的第一个数和最后一个数都是1
  3. 每一行的元素个数,和行数相同
  4. 从第3行开始,每一行的除第1个和最后一个元素之外的其他元素, 第i行第j列的值 = 第i-1行第j列值 + 第i-1行第j - 1列
  5. 输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。
  6. 定义一个三维数组,并初始化之。写一个打印函数,负责打印三维数组中的数据,并测试。
//1.公司年销售额求和
public class Exercise {

  public static void main(String[] args) {
    //准备数据
    int[][] sales = {{22,66,44}, {77,33,88}, {25,45,65}, {11,66,99}};
    System.out.println(sum(sales));
    }

  public static int sum(int[][] a) {

    int total = 0;
    for (int i = 0; i < a.length; i++) {
      for (int j = 0; j < a[i].length; j++) {
        total += a[i][j];
      }
    }
    return total;
  }
public class Exercise {

  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    printTwoDemisionArray(triangleYang(n));

  }
  public static int[][] triangleYang(int n) {
    int[][] result;
    if (n == 1) {
      result = new int[][]{{1}};
      return result;
    }

    if (n == 2) {
      result = new int[][]{{1}, {1, 1}};
      return result;
    }

    //当 n>=3 的的时候
    //第二种初始化方式,初始化结果二维数组
    result = new int[n][];
    //先初始化第一行和第二行数据
    result[0] = new int[]{1};
    result[1] = new int[]{1, 1};

    //从第三行开始,计算杨辉三角的值
    for (int i = 2; i < n; i++) {
      result[i] = new int[i + 1]; //第i(从0开始编号)行, 元素个数 i + 1
      result[i][0] = 1;  //一行的第一个元素值为1
      result[i][i] = 1;  //一行的最后一个元素,值也为1

      for (int j = 1; j < i; j++) {
        //第i行第j列的值 = 第i - 1行第j列值 + 第i - 1行第j - 1列
        result[i][j] = result[i - 1][j] + result[i -1][j - 1];
      }
    }

    return result;

  }


  public static void printTwoDemisionArray(int[][] arr) {
    // int[][] arr.length 表示的是二维数组的长度(可以包含的一维数组的个数)
    // int[] arr[i]是一个一维数组的引用变量  arr[i].length 二维数组中第i个一维数组的长度

    //双重循环,遍历二维数组

    //外层循环,控制访问二维数组中的哪个一维数组
    for (int i = 0; i < arr.length; i++) {

      //针对二维数组中的每一个一维数组的遍历
      for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + "  ");
      }
      //System.out.println(Arrays.toString(arr[i]));
      System.out.println();
    }

  }

在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;

public class Exercise {
    public static void main(String[] args) {
        System.out.println("求m行n列的矩阵A和n行p列的矩阵B的乘积矩阵C");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入矩阵A的行数m:");
        int m = sc.nextInt();
        System.out.println("请输入矩阵A的列数n:");
        int n = sc.nextInt();
        System.out.println("请输入矩阵B的列数p:");
        int p = sc.nextInt();

        int arr1[][] = new int[m][n];//矩阵为m*n的矩阵
        int arr2[][] = new int[n][p];//矩阵为n*p的矩阵

        //为m*n矩阵传入初始值
        System.out.println("请为矩阵A赋初值:");
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                arr1[i][j]=sc.nextInt();//向矩阵arr1中输入数据
            }
        }

        //为n*p矩阵传入初始值
        System.out.println("请为矩阵B赋初值:");
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                arr2[i][j]=sc.nextInt();//向矩阵arr2中输入数据
            }
        }
        sc.close();
        //两数组相乘
        int[][] arr = new int[m][p];//创建矩阵用于存放乘积
        for(int i = 0; i< m; i++) {//矩阵行控制量
            for(int j = 0; j< p; j++) {//矩阵列控制量
                for(int k = 0; k < n; k++) {//矩阵arr的列
                    arr[i][j] = arr1[i][k]+arr2[k][j];//给矩阵arr元素赋值
                }
            }
        }

        //输出乘积矩阵arr
        System.out.println("乘积矩阵C为:");
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < p; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }
}
import java.util.Arrays;

public class Exercise1 {
    public static void main(String[] args) {
        //1、定义一个三维数组
        int[][][] t = new int[2][2][3];

        //2、初始化
        for (int i = 0; i < t.length; i++) {
            for (int j = 0; j < t[i].length; j++) {
                for (int k = 0; k < t[i][j].length; k++) {
                    t[i][j][k] = i + j + k;
                }
            }
        }

        //3、打印三维数组的方法测试
        print(t);
    }

    private static void print(int[][][] t){
        for (int i = 0; i < t.length; i++) {
            for (int j = 0; j < t[i].length; j++) {
                System.out.println("t["+ i +"][" + j + "] = "+ Arrays.toString(t[i][j]));
            }
        }

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主要内容: 1. 数组的定义 2. 数组的分类[按维数] 3. 数组的用法 4. 数组的常见操作 java中的foreach实现方式 一维数组 1. 定义:省略 2. 用法: 声明并赋值: //方法一:先声明,再赋值 int [] arr=new int[5]; arr[0]=10; arr[4]=100; arr[5]=10;//语法无误,编译时报错:java.lang.ArrayIndexOutOfBoundsException System.out.println(arr[5]);//语法无误,编译时报错:错误同上 //方法二:使用for循环动态赋值 //导入java.util.*;包 Scanner input=new Scanner(System.in); int [] arr=new int[5]; for(int i=0;i<arr.length;i++) { System.out.println("请输入第"+(i+1)+"个值"); arr[i]=input.nextInt(); } //方法三:声明时赋值 int [] arr=new int[]{23,45,56,67}; int [] arr1={23,45,56,67}; int [] arr2= new int[5]{23,45,56,67};//错误,此时不能给确定的长度 输出: int [] arr=new int[]{23,45,56,67}; //方法一:使用for循环输出 for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } //方法二:使用foreach输出:此为JDK5.0 新特性 for(int item : arr) { System.out.println(item); } 常见算法: 1. 求一维数组中的最大[小]值 2. 求一维数组中的总和,平均值 3. 添加,删除,修改,搜索等 具体请参考本人FTP\\5.0S1\\JAVA\\数组完整操作范例。[重复让人如此崩溃!] 二维数组 1. 定义:省略 2. 用法: 声明并赋值: //声明时赋值 int [][]arr={ {1,2,3}, {4,5,6}, {7,8,9} }; 输出: //方法一:使用嵌套for循环输出二维数组 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } //方法二:使用嵌套foreach输出二维数组 for(int row[] :arr) //此时不难看出,二维数组可以看作是每个元素都是一个一维数组的一维数组 { for(int item: row) { System.out.print(item+ " "); } System.out.println(); } 补充: //动态创建规则二维数组 int R=10;//行 int N=5;//列 int [][]arr=new int ­[N]; //动态创建不规则二维数组 int arr[][]; arr=new int[2][]; arr[0]=new int[10]; arr[1]=new int[5]; 赋值都一样:此处省略! 算法体验:杨辉三角 int i,j; int a[][]=new int[10][10]; //给每行的第一列,及对角线处均赋值为1 for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } //从arr[2][1]=a[1][0]+a[1][1]; //推出:a[i][j]=a[i-1][j-1]+a[i-1][j]; //即元素等于两肩之和 for(i=2;i<10;i++) { for(j=1;j<i;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++) { System.out.print(a[i][j]+" "); } System.out.println(); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值