java之二维数组
2016-09-24 09:14
363 查看
1.二维数组概述
每个班级有很多个学生,所以,可以用数组来存储,而每个年级同时又很多班级,这个也应该可以用数组来存储,那么如何来表示这样的数据呢?java就提供了二维数组供我们使用。
由此可见,二维数组其实就是一个元素为一维数组的数组。
2.二维数组之定义格式一
数据类型[][] 变量名 = new 数据类型[m]
;
m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
例如:
int[][] arr = new int[3][2];
定义了一个二维数组arr,这个二维数组有3个一维数组,名称是arr[0],ar[1],arr[2],每一个一维数组有2个元素,可以通过arr[m]
来获取。
3.二维数组之定义格式二
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组。
没有直接给出一维数组的个数,可以动态的给出。
例如:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1];
4.二维数组之定义格式三
数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},{元素...}}
或者数据类型[][] 变量名 = {{元素...},元素...},{元素...}};
例如:
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
5.练习
6.思考题
每个班级有很多个学生,所以,可以用数组来存储,而每个年级同时又很多班级,这个也应该可以用数组来存储,那么如何来表示这样的数据呢?java就提供了二维数组供我们使用。
由此可见,二维数组其实就是一个元素为一维数组的数组。
2.二维数组之定义格式一
数据类型[][] 变量名 = new 数据类型[m]
;
m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
例如:
int[][] arr = new int[3][2];
定义了一个二维数组arr,这个二维数组有3个一维数组,名称是arr[0],ar[1],arr[2],每一个一维数组有2个元素,可以通过arr[m]
来获取。
/** * */ public class Array2Demo { public static void main(String[] args){ //定义了一个二维数组 int[][] arr = new int[3][2]; //这个二维数组有3个一维数组元素 //每个一维数组有2个元素 //输出二维数组的名称 System.out.println(arr); //输出二维数组的第一个元素,一维数组的名称 System.out.println(arr[0]); //输出二维数组的第二个元素,一维数组的名称 System.out.println(arr[1]); //输出二维数组的第三个元素,一维数组的名称 System.out.println(arr[2]); //输出二维数组的第一个元素 System.out.println(arr[0][0]); //输出二维数组的第二个元素 System.out.println(arr[0][1]); } } [[I@1b6d3586 [I@4554617c [I@74a14482 [I@1540e19d
3.二维数组之定义格式二
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组。
没有直接给出一维数组的个数,可以动态的给出。
例如:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1];
4.二维数组之定义格式三
数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},{元素...}}
或者数据类型[][] 变量名 = {{元素...},元素...},{元素...}};
例如:
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
5.练习
/** * 二维数组的遍历 */ public class Array2Demo { public static void main(String[] args){ //定义一个二维数组 int[][] arr = new int[][] {{1,2,3},{4,5,6},{7,8,9}}; //arr[0]代表了{1,2,3} for (int x = 0;x<arr[0].length;x++){ System.out.println(arr[0][x]); } //arr[1]代表了{4,5,6} for (int x =0;x<arr[1].length;x++){ System.out.println(arr[1][x]); } //arr[2]代表了{7,8,9} for (int x = 0;x<arr[2].length;x++){ System.out.println(arr[2][x]); } //通过for循环的嵌套来输出二维数组的元素 for (int x = 0;x<arr.length;x++){//遍历二维数组中的一维数组 for (int y=0;y<arr[x].length;y++){//遍历二维数组中的一维数组的元素 System.out.print(arr[x][y]+"\t"); } System.out.println(); } } }
/** * 某公司销售额求和 * 某公司按照季度和月份统计的数据如下,单位:万元 * 第一季度:22 66 44 * 第二季度:77 33 88 * 第三季度:25 45 65 * 第四季度:11 66 99 * */ public class Array2Demo { public static void main(String[] args){ int[][] arr = new int[][]{{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; int sum = 0; for (int x = 0;x<arr.length;x++){ for (int y = 0;y<arr[x].length;y++){ sum += arr[x][y]; } } System.out.println("销售额总和为:"+sum); } }
import java.util.Scanner; /** * 打印杨辉三角形 * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 1 4 6 4 1 * 1 5 10 5 1 * * 分析: * 1.任何一行的第一列和最后一列都是1 * 2.从第三行开始,每一个数据是它上一行的前一列和它的上一行的本列之和 * 步骤: * 1.定义一个二维数组,行数如果是n,我们把列数也定义为n * 2.給二维数组的任何一行的第一列和最后一列赋值为1 * 3.按照规律,給其他元素赋值 * 从第三行开始,每一个数据是它的上一行的前一列和它的上一行的本列之和 * 4.遍历这个二维数组 */ public class Array2Demo { public static void main(String[] args) { //创建键盘录入对象 Scanner input = new Scanner(System.in); //n这个数据是来自于键盘录入 System.out.println("请输入一个数据:"); int n = input.nextInt(); //定义一个二维数组 int[][] arr = new int ; //給二维数组的任何一行的第一列和最后一列赋值为1 for (int x = 0; x < arr.length; x++) { arr[x][0] = 1;//任何一行第一列 arr[x][x] = 1;//任何一行最后一列 } //从第三行开始,每一个数据是它的上一行的前一列和它的上一行的本列之和 for (int x = 2;x<arr.length;x++){ for (int y = 1;y<=x-1;y++){ arr[x][y] = arr[x-1][y-1] + arr[x-1][y]; } } //打印 printYangHuiSanJiao(arr); } /** * 输出二维数组的每个元素 * @param arr */ public static void printYangHuiSanJiao(int[][] arr){ for (int x = 0;x<arr.length;x++){ for (int y = 0;y<=x;y++){ System.out.print(arr[x][y]+"\t"); } System.out.println(); } } }
6.思考题
/** * java中参数传递 */ public class ArgsDemo { public static void main(String[] args){ int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); change(a,b); int[] arr= {1,2,3,4,5}; change(arr); printArray(arr); } public static void change(int a, int b) { System.out.println("a:"+a+",b="+b); a = b; b = a + b; System.out.println("a:"+a+",b="+b); } public static void change(int[] arr){ for (int x =0;x<arr.length;x++){ if(arr[x]%2 == 0){ arr[x] *= 2; } } } public static void printArray(int[] arr){ for (int x = 0;x<arr.length;x++){ System.out.print(arr[x]+"\t"); } System.out.println(); } } a:10,b:20 a:10,b=20 a:20,b=40 1 4 3 8 5
/** * 某公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全 * 在传递过程中需要加密,加密规则如下: * 首先将数据倒序,然后将每位数组都加上5,再用和除以10的余数代替该数字, * 最后将第一位和最后一位数字交换。 * 请任意给定一个小于8位的整数,然后,把加密后的结果输出到控制台上 * * 题目要求: * A.数据是小于8位的整数 * 定义一个int类型的数据 * int number = 1232456; * B.加密规则 * a.首先将数据倒序 * 结果 654321 * b.然后将每位数字都加上1,再用和除以10的余数代替该数字 * 结果 109876 * c.最后将第一位和最后一位数字交换 * 结果 609871 * C.将加密后的结果输出到控制台 * * 通过简单的分析,我们知道如果我们有办法把这个数据变成数据就好了。 * * 那么,如何把数据转换成一个数组呢? * A.定义一个数据 * int number = 123456; * B.定义一个数组,这个时候问题就来了,数组的长度是多少呢? * int[] arr = new int[8];//不可能超过8 * 在赋值的时候,我们需要定义一个变量来记录索引的变化。 * 定义一个索引值是0 * int index = 0; * C.获取每一个数据 * int ge = number % 10; * int shi = number / 10 % 10; * int bai = number /10/10%10; * * arr[index]=ge; * index++; * arr[index]=shi; * index++; * arr[index]=bai; * ... * */ public class ArgsDemo { public static void main(String[] args){ //定义一个数据 int number = 123456; //定义一个数组 int[] arr = new int[8]; //把数据中每一位上的数据获取到后,存储到数组中 int index = 0; while(number > 0){ arr[index++]= number %10; number /= 10; } //然后将每位数字都加上5,再用和除以10的余数代替该数组 for (int x = 0;x<arr.length;x++){ arr[x] += 5; arr[x] %= 10; } //最后将第一位和最后一位交换 int temp = arr[0]; arr[0] = arr[index-1]; arr[index-1] = temp; //输出数组中的数据 printArray(arr,index); } public static void printArray(int[] arr,int index){ for (int x=0;x<index;x++){ System.out.print(arr[x]+"\t"); } System.out.println(); } } 代码改进 import java.util.Scanner; /** * 某公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全 * 在传递过程中需要加密,加密规则如下: * 首先将数据倒序,然后将每位数组都加上5,再用和除以10的余数代替该数字, * 最后将第一位和最后一位数字交换。 * 请任意给定一个小于8位的整数,然后,把加密后的结果输出到控制台上 * * 题目要求: * A.数据是小于8位的整数 * 定义一个int类型的数据 * int number = 1232456; * B.加密规则 * a.首先将数据倒序 * 结果 654321 * b.然后将每位数字都加上1,再用和除以10的余数代替该数字 * 结果 109876 * c.最后将第一位和最后一位数字交换 * 结果 609871 * C.将加密后的结果输出到控制台 * * 通过简单的分析,我们知道如果我们有办法把这个数据变成数据就好了。 * * 那么,如何把数据转换成一个数组呢? * A.定义一个数据 * int number = 123456; * B.定义一个数组,这个时候问题就来了,数组的长度是多少呢? * int[] arr = new int[8];//不可能超过8 * 在赋值的时候,我们需要定义一个变量来记录索引的变化。 * 定义一个索引值是0 * int index = 0; * C.获取每一个数据 * int ge = number % 10; * int shi = number / 10 % 10; * int bai = number /10/10%10; * * arr[index]=ge; * index++; * arr[index]=shi; * index++; * arr[index]=bai; * ... * */ public class ArgsDemo { public static void main(String[] args){ //创建键盘录入对象 Scanner input = new Scanner(System.in); System.out.println("请输入一个小于8位的数字:"); //定义一个数据 int number = input.nextInt(); //调用加密算法 String result = jiaMi(number); System.out.println("加密后的结果是:"+result); } public static String jiaMi(int number){ //定义数组 int[] arr = new int[8]; //定义索引 int index = 0; //把number中的数据想办法放到数组中 while(number >0){ arr[index++] = number %10; number /= 10; } //把每个数据加5,然后对10取余 for (int x =0;x<arr.length;x++){ arr[x] += 5; arr[x] %= 10; } //把第一个数据和最后一个数据交换 int temp = arr[0]; arr[0] = arr[index-1]; arr[index-1] = temp; //把数组的元素拼接成一个字符串返回 String str = ""; for (int x = 0;x<index;x++){ str += arr[x]; } return str; } }
相关文章推荐
- java之面向对象
- Java中Cookie和Session的那些事儿
- java 中打印调用栈
- Myeclipse/eclipse开发工具反编译插件JadClpse
- 一道关于java异常处理的题目
- javaweb三大框架知识点总结
- Java EE - Spring MVC 数据绑定实例
- Maven搭建SpringMVC+MyBatis项目详解
- java经典小算法
- java异常处理——题
- Eclipse Android 开发界面介绍
- JAVA 异常
- java 并发编程动画演示
- JavaWeb学习总结
- JAVA 数据库查询返回两次结果集
- 一网打尽各类Java基本数据类型转换
- javaweb:判断当前请求是否为移动设备访问
- Hdu1718-Rank
- Hdu1234-开门人和关门人
- 使用Eclipse查看jar包中的源码