回顾Java中被遗忘的细节(四)

来源:互联网 发布:日本黑科技 知乎 编辑:程序博客网 时间:2024/05/21 08:01

数组是指存储同一种数据类型的多个元素的容器。每一个元素都有编号,从0开始,最大编号是长度-1.数组的初始化分为动态初始化和静态初始化,动态初始化指定义数组时只给定长度,有系统给出默认值,举例:int[] arr = new int[3];静态初始化则是给出值,由系统决定长度,举例:int[] arr = {1,2,3};二维数组则指的是元素为数组的一维数组,举例:

A:数据类型[ ][ ] 数组名 = new 数据类型[m][n];
B:数据类型[ ][ ] 数组名 = new 数据类型[m][ ];
C:数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{{...},{...},{...}};
D:数据类型[ ][ ] 数组名 = {{...},{...},{...}};

常见的数组操作:

//遍历public void printArray(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {if(x == arr.length-1) {System.out.println(arr[x]+"]");}else {System.out.println(arr[x]+", ");}}}

//最值<span style="white-space:pre"></span>public int getMax(int[] arr) {int max = arr[0];for(int x=1; x<arr.length; x++) {if(arr[x] > max) {     max = arr[x];}}return max;}


//逆序//方式1:public void reverse(int[] arr) {for(int x=0; x<arr.length/2; x++) {int temp = arr[x];arr[x] = arr[arr.length-1-x];arr[arr.length-1-x] = temp;}}//方式2:public void reverse(int[] arr) {for(int start=0,end=arr.length-1; start<=end; start++,end--) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;}}

//基本查找//方式1:public int getIndex(int[] arr,int value) {for(int x=0; x<arr.length; x++) {if(arr[x] == value) {return x;}}return -1;}//方式2:public int getIndex(int[] arr,int value) {int index = -1;for(int x=0; x<arr.length; x++) {if(arr[x] == value) {index = x;break;}}return index;}

这里开始使用到方法,即函数,而方法重载的要求是在同一个类中,方法名相同,参数列表不同。与返回值无关。即包含参数的个数不同,以及参数的对应的数据类型不同。


/*需求:打印杨辉三角形(行数可以键盘录入)11 11 2 11 3 3 11 4 6 4 1 1 5 10 10 5 1分析:看这种图像的规律A:任何一行的第一列和最后一列都是1B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。步骤:A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。  这个n的数据来自于键盘录入。B:给这个二维数组任何一行的第一列和最后一列赋值为1C:按照规律给其他元素赋值从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。D:遍历这个二维数组。*/import java.util.Scanner;class yangHui{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];//给这个二维数组任何一行的第一列和最后一列赋值为1for(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开始,因为第一列也是有值了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++) {System.out.print(arr[x][y]+"\t");}System.out.println();}}}



0 0
原创粉丝点击