一维数组

  • 两个数组之间的复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 两个数组元素个数一致
int[] as = new int[]{11,12,13,14,15};
int[] bs = new int[ 5 ];
int i;
for(i=0; i<as.length; i++){
bs[i] = as[i];
}
for(i=0; i<as.length; i++){
System.out.print(“bs[“+i+”]=”+bs[i]+”\t”);
}


// 两个数组元素个数不一致
int[] as = {1,2,3,4,5};
int[] bs = new int[3];
bs = Arrays.copyOf(as,as.length);
for(int i=0; i<bs.length; i++){
System.out.println(bs[i]);
}
  • 利用Arrays组件查找数组最大值及最小值
1
2
3
4
5
6
7
8
9
10
11
12
13
int[] ns = {11,59,2,47,68,32,555};//数组声明,放入初始值
int i=-1;//循环计数器,控制数组下标。因为数组下标从0开始,所以控制数组下标的计数器变量声明时初值习惯给-1
//给数组排序
Arrays.sort(ns);//Arrays.sort( 数组名 ) 将数组元素从小到大排序

//清空数组的首元素,删除最小元素
ns[0]=0;
//清空数组的尾元素,删除最大元素
ns[ns.length-1]=0;
//打印删除后的结果
for(i=0; i<ns.length-1; i++){
System.out.print("ns["+i+"]="+ns[i]+"\t");
}
  • 产生6个无重复的1-13之间的随机数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int[]  ns = new int[6];
//产生6个随机数放入数组
Random obj = new Random();

int i=-1;
int j=-1;//内训排重循环控制变量j
for( i=0; i<ns.length; i++){
//产生1~13之间的随机整数,存储到数组的每个元素中
ns[i] = obj.nextInt(13)+1 ;
//ns[0]=11 ns[1]=2 ns[2]=4 ns[3]=7 ns[4]=2
//嵌套循环,看看从0到i-1元素中,有没有那个元素与[i]这个元素一样
for(j=0; j<=i-1; j++){
//前面的元素 == 当前元素 ,条件成立时[i]元素在前面以出现
if(ns[j] == ns[i]){
//重复说明[i]是无效的,递减1
i--;
}
}
}

//看看这6个随机数
for(i=0; i<ns.length; i++){
System.out.print(ns[i]+"\t");
}
  • 双色球小游戏
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 6个红色球,1个蓝色球
int[] ns = new int[7];
//产生6个红色球 1~33之间的随机数
Random obj = new Random();

int i=-1;
int j=-1;//内训排重循环控制变量j
for( i=0; i<ns.length-1; i++){
//产生1~13之间的随机整数,存储到数组的每个元素中
ns[i] = obj.nextInt( 33 )+1 ;
//ns[0]=11 ns[1]=2 ns[2]=4 ns[3]=7 ns[4]=2
//嵌套循环,看看从0到i-1元素中,有没有那个元素与[i]这个元素一样
for( j=0; j<=i-1; j++){
//前面的元素 == 当前元素 ,条件成立时[i]元素在前面以出现
if( ns[j] == ns[i]){
//重复说明[i]是无效的,递减1
i--;
}
}
}
//产生1个蓝色球的1~16之间随机数
ns[ ns.length-1 ] = obj.nextInt(16)+1;

//将系统的7个随机数与,组成字符串
String sysNum = "";
for(i=0; i<ns.length; i++){
sysNum = sysNum+ ns[i] +",";
}
//System.out.println("金手指,系统号码:"+sysNum);

//声明数组存储用户购买的7个数字
int[] us = new int[7];
Scanner input = new Scanner(System.in);
System.out.print("请自选号码:");
for(i=0; i<us.length; i++){
us[i] = input.nextInt();
}
//将用户输入的7个数字与,组成字符串
String userNum = "";
for(i=0; i<us.length; i++){
userNum = userNum + us[i] +",";
}
//System.out.println("您自选的号码是:"+ userNum);

if( sysNum.equals( userNum) ){
System.out.println("恭喜您双色球获得特等奖【1 RMB】");
}else{
System.out.println("谢谢惠顾,欢迎下次再来!");
}

二维数组

  • 基本概念

二维数组就是由一维数组组成的数组,其元素是一维数组。

二维数组定义时需要两个中括号,方式如下:

1
2
3
4
5
6
数据类型[][]  数组名  = new  数据类型[行数][列数];
int[][] arr = new int[2][3];
int[][] arr = new int[3][];

定义二维数组arr以后, arr是二维数组,arr[i]是一维数组,arr[i][j]是数据。
其中,最左边的中括号里面必须有长度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int[][] ns = new int[3][4];
int i=-1,j=-1;
int num = 1;
for(i=0; i<3; i++){ //外循环控制行
for(j=0; j<4; j++){ //内循环控制列
ns[i][j]=num;
num++;
}
}

for( i=0; i<3; i++){ //外循环控制行
for(j=0; j<4; j++){ //内循环控制列
System.out.print(ns[i][j]+”\t”);
}
System.out.println(“”);
}
System.out.println(“此时num是:”+num);

二维数组常见算法

  • 求二维数组行数字和
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int[][] ns = new  int[3][4];
int i=-1,j=-1;
int num=1;

for( i=0; i<3; i++){//循环3行
for(j=0; j<4; j++){//循环4列
ns[i][j] = num++;
}
}

int[] sum = new int[3];//声明一维数组存储3行数据之和
//sum[0] = ns[0][0] + ns[0][1] + ns[0][2] + ns[0][3];//求第1行数字和
//sum[1] = ns[1][0] + ns[1][1] + ns[1][2] + ns[1][3];//求第2行数字和
//sum[2] = ns[2][0] + ns[2][1] + ns[2][2] + ns[2][3];//求第3行数字和

//一层循环求各行数据和
//for(i=0; i<3; i++){
// sum[i] = ns[i][0] + ns[i][1] + ns[i][2] + ns[i][3];//求第i行的数据和
//}

for(i=0; i<3; i++){
for(j=0; j<4; j++){
//sum[i] = sum[i]+ns[i][j];//求第i行的数据和
sum[i] += ns[i][j];
}
}
System.out.println("第1行数字和:"+ sum[0]);
System.out.println("第2行数字和:"+ sum[1]);
System.out.println("第3行数字和:"+ sum[2]);
  • 求二维数组列里数字和
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int[][] ns = new  int[3][4];
int i=-1,j=-1;
int num=1;

for( i=0; i<3; i++){//循环3行
for(j=0; j<4; j++){//循环4列
ns[i][j] = num++;
}
}

int[] sum = new int[4];//声明一维数组存储4列数据之和
//sum[0] = ns[0][0] + ns[1][0] + ns[2][0] ;//求第1列数字和
//sum[1] = ns[0][1] + ns[1][1] + ns[2][1] ;//求第2列数字和
//sum[2] = ns[0][2] + ns[1][2] + ns[2][2] ;//求第3列数字和
//sum[3] = ns[0][3] + ns[1][3] + ns[2][3] ;//求第3列数字和

//一层循环求各列之和
//for(i=0; i<4; i++){
// sum[i] = ns[0][i] + ns[1][i] + ns[2][i] ;//求第1列数字和
//}

//2层循环求各列之和
for(i=0; i<4; i++){
for(j=0; j<3; j++){
sum[i] += ns[j][i] ;//求第i列数字和
}
}
for(i=0; i<4; i++){
System.out.println("第"+(i+1)+"列数字和:"+ sum[i]);
}