JAVA数组与多维数组遍历
在操作数组时,经常需依次访问数组中的每个元素,这种操作成为数组的遍历。
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
// 使⽤for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 通过索引访问元素
}
}
}
数组的常见问题
1、数组的最值
public class ArrayDemo05 {
public static void main(String[] args) {
int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义⼀个数组
int max = arr[0]; // 定义变量max⽤于记住最⼤数,⾸先假设第⼀个元素为最⼤值
// 下⾯通过⼀个for循环遍历数组中的元素
for (int x = 1; x < arr.length; x++) {
if (arr[x] > max) { // ⽐较 arr[x]的值是否⼤于max
max = arr[x]; // 条件成⽴,将arr[x]的值赋给max
}
}
System.out.println("max=" + max); // 打印最⼤值
}
}
通过for 循环获取数组中的最⼤值,赋值给max变量。
⾸先假设数组中第⼀个元素arr[0]为最⼤值,然后使⽤for循环对数组进⾏遍历,在遍历的过程中只要遇到⽐max值还⼤的元素,就将该元素赋值给max。这样⼀来,变量max就能够在循环结束时记住数组中的最⼤值。需要注意的是,在for循环中的变量i是从1开始的,这样写的原因是程序已经假设第⼀个元素为最⼤值,for循环中只需要从第⼆个元素开始⽐较,从⽽提⾼程序的运⾏效率。
⼆、数组异常
1、数组越界异常
每个数组的索引都有⼀个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错。
2、空指针异常
在使⽤变量引⽤⼀个数组时,变量必须指向⼀个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常。
三、⼆维数组
⼆维数组的定义有很多⽅式,接下来针对⼏种常见的⽅式进⾏详细地讲解,具体如下:
第⼀种⽅式:
int[ ][ ] arr = new int[3][4];
上⾯的代码相当于定义了⼀个3*4的⼆维数组,即⼆维数组的长度为3,⼆维数组中的每个元素⼜是⼀个长度为4的数组
图1-1 ⼆维数组
第⼆种⽅式:
int[ ][ ] arr = new int[3][ ];
第⼆种⽅式和第⼀种类似,只是数组中每个元素的长度不确定,
第三种⽅式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上⾯的⼆维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},
对⼆维数组中元素的访问也是通过⾓标的⽅式,如需访问⼆维数组中第⼀个元素数组的第⼆个元素,具体代码如下:arr[0][1];
⼆维数组的元素访问
class ArrayDemo08 {
public static void main(String[] args){
//定义⼆维数组的⽅式
int[][] arr = new int[3][4];
System.out.println( arr );
System.out.println("⼆维数组的长度: " + arr.length);
//获取⼆维数组的3个元素
System.out.println( arr[0] );
System.out.println( arr[1] );
System.out.println( arr[2] );
System.out.println("打印第⼀个⼀维数组的元素值");
System.out.println( arr[0][0] );
System.out.println( arr[0][1] );//访问的为⼆维数组中第1个⼀维数组的第2个元素
System.out.println( arr[0][2] );
System.out.println( arr[0][3] );
System.out.println("打印第⼆个⼀维数组的元素值");
System.out.println( arr[1][0] );
System.out.println( arr[1][1] );
System.out.println( arr[1][2] );
System.out.println( arr[1][3] );
System.out.println("打印第三个⼀维数组的元素值");
System.out.println( arr[2][0] );
System.out.println( arr[2][1] );
System.out.println( arr[2][2] );
System.out.println( arr[2][3] );
}
}
1.1.1 ⼆维数组元素遍历与数组元素累加和
class ArrayDemo09 {
public static void main(String[] args){
//⼀维数组的求累加和并遍历
int[] arr = {10,20,30,40,50};
int sum = 0;
for (int i=0; i<arr.length; i++) {
//System.out.println(arr[i]);
sum += arr[i];
}
System.out.println("sum= " + sum);
System.out.println("---------------------");
//⼆维数组的求累加和并遍历
int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum2 = 0;
for (int i=0; i<arr2.length; i++) {
for (int j=0; j<arr2[i].length; j++) {
//System.out.println(arr2[i][j])
sum2 += arr2[i][j];
}
}
System.out.println("sum2= "+ sum2);
}
}
输出结果 sum=150    sum2 = 55
1.1.2  公司销售总和练习
接下来通过⼀个案例来熟悉⼆维数组的使⽤。
例如要统计⼀个公司三个销售⼩组中每个⼩组的总销售额以及整个公司的销售额。如下所⽰
l 第⼀⼩组销售额为{11, 12}万元
l 第⼆⼩组销售额为{21, 22, 23}万元
l 第三⼩组销售额为{31, 32, 33, 34}万元。
1public class ArrayDemo10 {
2    public static void main(String[] args) {
3        int[][] arr = new int[3][]; // 定义⼀个长度为3的⼆维数组
4        arr[0] = new int[] { 11, 12 }; // 为数组的元素赋值
5        arr[1] = new int[] { 21, 22, 23 };
6        arr[2] = new int[] { 31, 32, 33, 34 };
java定义一维数组并赋值7
8        int sum = 0; // 定义变量记录总销售额
9        for (int i = 0; i < arr.length; i++) { // 遍历数组元素
10            int groupSum = 0; // 定义变量记录⼩组销售总额
11            for (int j = 0; j < arr[i].length; j++) { // 遍历⼩组内每个⼈的销售额
12                groupSum = groupSum + arr[i][j];
13            }
14            sum = sum + groupSum; // 累加⼩组销售额
15            System.out.println("第" + (i + 1) + "⼩组销售额为:" + groupSum + " 万元");
16        }
17        System.out.println("总销售额为: " + sum + " 万元");
18    }
19}
在上述代码中,第3⾏代码定义了⼀个长度为3的⼆维数组,并在4~6⾏代码中为数组的每个元素赋值。例程中还定义了两个变
量sum和groupSum,其中sum⽤来记录公司的总销售额,groupSum⽤来记录每个销售⼩组的销售额。当通过嵌套for循环统计销售额时,外层循环对三个销售⼩组进⾏遍历,内层循环对每个⼩组员⼯的销售额进⾏遍历,内层循环每循环⼀次就相当于将⼀个⼩组员⼯的销售总额统计完毕,赋值给groupSum,然后把groupSum的值与sum的值相加赋值给sum。当外层循环结束时,三个销售⼩组的销售总额groupSum都累加到sum中,即统计出了整个公司的销售总额。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。