数组:
数组是相同数据类型元素的有序集合。
数组的声明:
数据类型[] 数组名字 = new 数据类型[数组长度]; eg:int[] nums = new int[5]; 不初始化的话,默认int值为0;
数组的下标:
从0开始,最大值是数组长度—1;[0,nums.length-1]
数组的赋值:
数组名字[下标] = 值;
nums[0]=10;
nums[1]=20;
nums[2]=30;
nums[3]=40;
nums[4]=50;
nums[5]=60;// java.lang.ArrayIndexOutOfBoundsException(数组下标越界异常)
数组的动态初始化:
int[] nums = new int[5];
nums[0]=10;
.....
数组的静态初始化:
int[] nums = {1,2,3,4,5};正确
int[] nums = new int[]{1,2,3,4,5};正确
int[5] nums = new int[]{1,2,3,4,5};错误;
int[5] nums = {1,2,3,4,5};错误;
int[] nums;
nums = {1,2,3,4,5}错误;
int[] nums;
nums = new int[]{1,2,3,4,5};正确
总之[]里面不能写数组长度值,写就报错!
代码练习题:根据用户输入的人数,动态创建数组,并获取用户输入的成绩,统计最高分,最低分和平均分
package cn.zzsxt.test.demo4; import java.util.Scanner; public class TestArray3 { public static void main(String[] args) { System.out.println("请输入班级人数:"); Scanner input = new Scanner(System.in); int num = input.nextInt(); double sum = 0; double avg = 0; double max, min; // 创建成绩数组 double[] scores = new double[num]; // 给每个同学赋成绩值 for (int i = 0; i < scores.length; i++) { System.out.println("请输入第" + (i + 1) + "个同学的成绩:"); scores[i] = input.nextDouble(); } max = scores[0]; min = scores[0]; // 遍历出每个同学成绩 for (int i = 0; i < scores.length; i++) { sum += scores[i]; if (scores[i] > max) { max = scores[i]; } if (scores[i] < min) { min = scores[i]; } } avg = sum / num; System.out.println("总成绩是:" + sum); System.out.println("平均成绩是:" + avg); System.out.println("最大值是:" + max); System.out.println("最小值是:" + min); } }
高级for循环练习
package cn.zzsxt.test.demo4; public class TestForEach { public static void main(String[] args) { int[] nums = new int[] { 10, 20, 35, 40, 50 }; for (int i = 0; i < nums.length; i++) { int n = nums[i]; System.out.println(n); } System.out.println("=============="); /* 本质上也是先通过下标取到每个元素值,主要用于遍历元素。 * 功能略逊于for循环! 数据类型一定要与数组的数据类型保持一致 * for...each:高级for循环for(int n : nums){ * } * ==> 等价于 * for(int i=0;i<nums.length;i++){ * int n= nums[i] * } */ for (int n : nums) { System.out.println(n); } } }