ArrayDemo2

package java基础知识.数组和常用算法;

public class ArrayDemo2 {

	/*
	数组操作常见问题

	1:ArrayIndexOutOfBoundsException
		访问数组下标越界。就是已经超过能访问的最大角标。

	2:NullPointerException
		空指针异常。就是说你访问的实体为空。null
	*/
	 
		{
			int[] arr = new int[]{2,4,6};
			
			//System.out.println(arr[3]);

			arr = null;
			System.out.println(arr);
			//System.out.println(arr[1]);

		}
	}



一、实验名称 Java数组的使用 二、实验目的 掌握Java中数组的定义与初始化方法 理解数组的内存分配机制 学会使用数组进行数据的存储和访问 掌握数组的基本操作(遍历、排序、查找等) 了解多维数组的使用方法 培养解决实际问题的数组应用能力 三、实验步骤 实验步骤1:一维数组的基本操作 代码示例1:数组的定义与初始化 java public class ArrayDemo1 { public static void main(String[] args) { // 1. 静态初始化数组 int[] staticArray = {10, 20, 30, 40, 50}; // 2. 动态初始化数组 int[] dynamicArray = new int[5]; dynamicArray[0] = 1; dynamicArray[1] = 3; dynamicArray[2] = 5; dynamicArray[3] = 7; dynamicArray[4] = 9; // 3. 打印数组内容 System.out.println("静态初始化数组:"); printArray(staticArray); System.out.println("\n动态初始化数组:"); printArray(dynamicArray); } // 辅助方法:打印数组 public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } } 实验要求: 编写上述代码并运行 观察数组长度与元素数量的关系 尝试访问数组越界元素(如staticArray[5]),观察异常信息 实验步骤2:数组的遍历与操作 代码示例2:数组的常见操作 java import java.util.Arrays; public class ArrayDemo2 { public static void main(String[] args) { int[] numbers = {5, 2, 8, 1, 9, 3}; // 1. 计算数组元素总和 int sum = 0; for (int num : numbers) { sum += num; } System.out.println("数组元素总和: " + sum); // 2. 查找最大值 int max = numbers[0]; for (int num : numbers) { if (num > max) { max = num; } } System.out.println("数组最大值: " + max); // 3. 数组排序 Arrays.sort(numbers); System.out.println("排序后数组: " + Arrays.toString(numbers)); // 4. 数组复制 int[] copy = Arrays.copyOf(numbers, numbers.length); System.out.println("复制后的数组: " + Arrays.toString(copy)); } } 实验要求: 实现上述代码 尝试使用不同方法实现数组排序(如冒泡排序) 编写方法实现数组反转 实验步骤3:多维数组的使用 代码示例3:二维数组操作 java public class MultiArrayDemo { public static void main(String[] args) { // 1. 定义并初始化二维数组 int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 2. 打印二维数组 System.out.println("二维数组内容:"); print2DArray(matrix); // 3. 计算对角线元素和 int diagonalSum = 0; for (int i = 0; i < matrix.length; i++) { diagonalSum += matrix[i][i]; } System.out.println("主对角线元素和: " + diagonalSum); // 4. 动态创建不规则二维数组 int[][] jaggedArray = new int[3][]; jaggedArray[0] = new int[2]; jaggedArray[1] = new int[3]; jaggedArray[2] = new int[4]; // 填充不规则数组 int count = 1; for (int i = 0; i < jaggedArray.length; i++) { for (int j = 0; j < jaggedArray[i].length; j++) { jaggedArray[i][j] = count++; } } System.out.println("\n不规则二维数组:"); print2DArray(jaggedArray); } // 辅助方法:打印二维数组 public static void print2DArray(int[][] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + "\t"); } System.out.println(); } } } 实验要求: 实现上述代码 尝试实现矩阵转置 编写方法计算二维数组中所有元素的和 实验步骤4:数组应用实例 代码示例4:学生成绩统计系统 java import java.util.Scanner; public class StudentScoreSystem { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生人数: "); int studentCount = scanner.nextInt(); // 存储学生成绩 double[] scores = new double[studentCount]; // 输入学生成绩 for (int i = 0; i < studentCount; i++) { System.out.print("请输入第" + (i+1) + "个学生的成绩: "); scores[i] = scanner.nextDouble(); } // 计算平均分 double sum = 0; for (double score : scores) { sum += score; } double average = sum / studentCount; // 找出最高分和最低分 double max = scores[0]; double min = scores[0]; for (double score : scores) { if (score > max) max = score; if (score < min) min = score; } // 输出统计结果 System.out.println("\n成绩统计结果:"); System.out.println("学生人数: " + studentCount); System.out.println("平均分: " + String.format("%.2f", average)); System.out.println("最高分: " + max); System.out.println("最低分: " + min); scanner.close(); } } 实验要求: 实现上述代码 扩展功能:添加成绩排序功能 扩展功能:统计各分数段人数(如90-100, 80-89等) 根据以上写出示例
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值