zoukankan      html  css  js  c++  java
  • 《java入门第一季》二维数组三个案例详解

    案例一:遍历二维数组

    /*
    	需求:二维数组遍历
    	
    	外循环控制的是二维数组的长度,其实就是一维数组的个数行数。
    	内循环控制的是一维数组的长度,每一行,一维数组元素分别的个数。
    */
    class Array2Test {
    	public static void main(String[] args) {
    		//定义一个二维数组
    		int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
    		
    		//请问谁代表{1,2,3}
    		//arr[0]就是第一个数组
    		//arr[0] = {1,2,3};
    		for(int x=0; x<arr[0].length; x++) {
    			System.out.println(arr[0][x]);
    		}
    		System.out.println("--------------");
    		
    		for(int x=0; x<arr[1].length; x++) {
    			System.out.println(arr[1][x]);
    		}
    		System.out.println("--------------");
    		
    		for(int x=0; x<arr[2].length; x++) {
    			System.out.println(arr[2][x]);
    		}
    		System.out.println("--------------");
    		
    		//用循环改进
    		for(int x=0; x<3; x++) {
    			for(int y=0; y<arr[x].length; y++) {
    				System.out.print(arr[x][y]+" ");
    			}
    			System.out.println();
    		}
    		System.out.println("--------------");
    		
    		//这个时候,注意了,3是我们根据上面的代码得出来的
    		//但是,它不能针对任何的数组都可以这样
    		//所以,我们应该想办法改进
    		//其实,外面的这个循环的长度就是二维数组的长度
    		
    		for(int x=0; x<arr.length; x++) {
    			for(int y=0; y<arr[x].length; y++) {
    				System.out.print(arr[x][y]+" ");
    			}
    			System.out.println();
    		}
    		System.out.println("--------------");
    		
    		//用方法改进
    		//调用方法
    		printArray2(arr);
    		System.out.println("--------------");
    		
    		//我们再来一个列数是变化的
    		int[][] arr2 = {{1,2,3},{4,5},{6}};
    		printArray2(arr2);
    	}
    	
    	/*
    		需求:遍历二维数组
    		两个明确:
    			返回值类型:void
    			参数列表:int[][] arr(他就是你定义的格式)
    	*/
    	public static void printArray2(int[][] arr) {
    		for(int x=0; x<arr.length; x++) {
    			for(int y=0; y<arr[x].length; y++) {
    				System.out.print(arr[x][y]+" ");
    			}
    			System.out.println();
    		}
    	}
    }


    案例二:

    公司季度营业额求和。(考察二维数组的遍历在实际中的应用,学会转换)

    /*
    	公司年销售额求和
    	某公司按照季度和月份统计的数据如下:单位(万元)
    	第一季度:22,66,44
    	第二季度:77,33,88
    	第三季度:25,45,65
    	第四季度:11,66,99
    	
    	分析:
    		A:把题目的数据用二维数组来表示
    			int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
    		B:如何求和呢?
    			求和其实就是获取到每一个元素,然后累加即可。
    		C:定义一个求和变量sum,初始化值是0。
    		D:通过遍历就可以得到每一个二维数组的元素。
    		E:把元素累加即可。
    		F:最后输出sum,就是结果。
    */
    class Array2Test2 {
    	public static void main(String[] args) {
    		//把题目的数据用二维数组来表示
    		int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
    		
    		//定义一个求和变量sum,初始化值是0。
    		int sum = 0;
    		
    		//通过遍历就可以得到每一个二维数组的元素。
    		for(int x=0; x<arr.length; x++) {
    			for(int y=0; y<arr[x].length; y++) {
    				//把元素累加即可。
    				sum += arr[x][y];
    			}
    		}
    		
    		//最后输出sum,就是结果。
    		System.out.println("一年的销售额为:"+sum+"万元");
    	}
    }


    案例三:

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

    /*
    
    	需求:打印杨辉三角形(行数可以键盘录入)
    	
    	1
    	1 1	
    	1 2 1
    	1 3 3 1
    	1 4 6 (4) 1 
    	1 5 10 10 5 1
    
    	分析:看这种图像的规律
    		A:任何一行的第一列和最后一列都是1
    		B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。如(4)=3+1
    	
    	步骤:
    		A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
    		  这个n的数据来自于键盘录入。
    		B:给这个二维数组任何一行的第一列和最后一列赋值为1
    		C:按照规律给其他元素赋值
    			从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
    		D:遍历这个二维数组。
    */
    import java.util.Scanner;
    
    class Array2Test3 {
    	public static void main(String[] args) {
    		//创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    		
    		//这个n的数据来自于键盘录入。
    		System.out.println("请输入一个数据:");
    		int n = sc.nextInt();
    		
    		//定义二维数组
    		int[][] arr = new int[n][n];
    		
    		//给这个二维数组任何一行的第一列和最后一列赋值为1
    		for(int x=0; x<arr.length; x++) {
    			arr[x][0] = 1; //任何一行第1列
    			arr[x][x] = 1; //任何一行的最后1列
    		}
    		
    		//按照规律给其他元素赋值
    		//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
    		for(int x=2; x<arr.length; x++) {
    			//这里如果y<=x是有个小问题的,就是最后一列的问题(因为最后一列已经有值了),所以最后一列不用再赋值
    			//所以这里要减去1
    			//并且y也应该从1开始,因为第一列也是有值了,第一列不用再赋值,所以y从1开始计数
    			for(int y=1; y<=x-1; y++) {
    				//每一个数据是它上一行的前一列和它上一行的本列之和。
    				arr[x][y] = arr[x-1][y-1] + arr[x-1][y];//记住:“外行内列”
    			}
    		}
    		
    		//遍历二维数组
    		for(int x=0; x<arr.length; x++) {
    			for(int y=0; y<=x; y++) {//注意这里不是写成y<arr[x].length,要实现“阶梯形状”的固定写法y<=x。与九九乘法表类似
    				System.out.print(arr[x][y]+"	");
    			}
    			System.out.println();
    		}
    	}
    }


  • 相关阅读:
    mysql参数优化
    看见的一个mysql面试题
    面向对象的继承
    面向对象的权限修饰符
    php实现无限极分类
    php的冒泡排序
    frame框架的跳转
    thinkphp中open路径问题
    mysql触发器
    mysql事务
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299890.html
Copyright © 2011-2022 走看看