智能医学工程-计算机程序设计-2025版-实验03:数组与字符串

173 阅读5分钟

一、实验目的

  1. 掌握一维数组的声明、初始化、遍历及常见操作(如求平均值、最大值、最小值、排序、复制等)。
  2. 理解多维数组的使用,特别是二维数组的声明、初始化和遍历。
  3. 熟悉 String 类的常用操作,包括字符串的创建、修改、类型转换等。
  4. 掌握 StringBufferStringBuilder 类的使用,理解它们的区别及适用场景。
  5. 综合运用数组和字符串的知识,解决实际问题。

二、实验学时

2学时

三、实验类型

验证性

四、实验需求

1、硬件

每人配备计算机1台,建议优先使用个人计算机开展实验。

2、软件

安装IntelliJ IDEA,以及Java运行所需要的相关基础环境。

3、网络

本地主机能够访问互联网和实验中心网络。

4、工具

无。

五、实验任务

  1. 一维数组操作:实现一维数组的常见操作,包括求平均值、最大值、最小值、排序和复制。
  2. 二维数组操作:实现二维数组的声明、初始化和遍历,并完成矩阵转置操作。
  3. 字符串操作:使用 String 类实现字符串的常见操作,包括字符串的拼接、查找、替换和类型转换。
  4. StringBuffer 和 StringBuilder 的使用:比较 StringBufferStringBuilder 的性能差异,并实现字符串的动态修改。
  5. 综合任务:结合数组和字符串的知识,实现一个简单的学生成绩管理系统。

六、实验内容及步骤

任务 1:一维数组操作

步骤:

  1. 声明并初始化一个一维数组。
  2. 计算数组的平均值、最大值和最小值。
  3. 对数组进行排序。
  4. 复制数组到另一个数组。

示例代码:

import java.util.Arrays;

public class ArrayOperations {
    public static void main(String[] args) {
        int[] array = {5, 3, 9, 1, 7, 4};

        // 计算平均值
        int sum = 0;
        for (int num : array) {
            sum += num;
        }
        double average = (double) sum / array.length;
        System.out.println("Average: " + average);

        // 计算最大值和最小值
        int max = array[0], min = array[0];
        for (int num : array) {
            if (num > max) max = num;
            if (num < min) min = num;
        }
        System.out.println("Max: " + max);
        System.out.println("Min: " + min);

        // 数组排序
        Arrays.sort(array);
        System.out.println("Sorted Array: " + Arrays.toString(array));

        // 数组复制
        int[] copyArray = Arrays.copyOf(array, array.length);
        System.out.println("Copied Array: " + Arrays.toString(copyArray));
    }
}

运行结果如图3-1

图3-1

任务 2:二维数组操作

步骤:

  1. 声明并初始化一个二维数组(矩阵)。
  2. 遍历二维数组并打印矩阵。
  3. 实现矩阵的转置操作。

示例代码:

public class TwoDArray {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        // 打印原始矩阵
        System.out.println("Original Matrix:");
        printMatrix(matrix);

        // 矩阵转置
        int[][] transposedMatrix = new int[matrix[0].length][matrix.length];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                transposedMatrix[j][i] = matrix[i][j];
            }
        }

        // 打印转置后的矩阵
        System.out.println("Transposed Matrix:");
        printMatrix(transposedMatrix);
    }

    // 打印二维数组
    public static void printMatrix(int[][] matrix) {
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

运行结果如图3-2

图3-2

任务 3:字符串操作

步骤:

  1. 使用 String 类创建字符串。
  2. 实现字符串的拼接、查找、替换操作。
  3. 实现字符串与基本数据类型的转换。

示例代码:

public class StringOperations {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "World";

        // 字符串拼接
        String result = str1 + " " + str2;
        System.out.println("Concatenated String: " + result);

        // 查找子字符串
        int index = result.indexOf("World");
        System.out.println("Index of 'World': " + index);

        // 替换字符串
        String replaced = result.replace("World", "Java");
        System.out.println("Replaced String: " + replaced);

        // 类型转换
        int num = 123;
        String numStr = Integer.toString(num); // int to String
        int parsedNum = Integer.parseInt(numStr); // String to int
        System.out.println("Parsed Number: " + parsedNum);
    }
}

运行结果如图3-3

图3-3

任务 4:StringBuffer 和 StringBuilder 的使用

步骤:

  1. 使用 StringBufferStringBuilder 分别实现字符串的动态修改。
  2. 比较两者的性能差异。

示例代码:

public class StringBufferBuilder {
    public static void main(String[] args) {
        // 使用StringBuffer
        //System.currentTimeMillis();//毫秒
        long startTime = System.nanoTime();//纳秒
        StringBuffer buffer = new StringBuffer("Hello");
        for (int i = 0; i < 10000; i++) {
            buffer.append("Java");
        }
        //System.currentTimeMillis();//毫秒
        long endTime = System.nanoTime();//纳秒
        System.out.println("StringBuffer Time: " + (endTime - startTime) + "ns");

        // 使用StringBuilder
        //System.currentTimeMillis();//毫秒
        startTime = System.nanoTime();//纳秒
        StringBuilder builder = new StringBuilder("Hello");
        for (int i = 0; i < 10000; i++) {
            builder.append("Java");
        }
        //System.currentTimeMillis();//毫秒
        endTime = System.nanoTime();//纳秒
        System.out.println("StringBuilder Time: " + (endTime - startTime) + "ns");
    }
}

运行结果如图3-4

图3-4

任务 5:综合任务 - 学生成绩管理程序

步骤:

  1. 使用数组存储学生姓名和成绩。
  2. 实现成绩的录入、查询、排序和输出功能。

代码:

import java.util.Arrays;
import java.util.Scanner;

public class StudentGradeSystem {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] names = new String[5];
        int[] scores = new int[5];

        // 录入学生姓名和成绩
        for (int i = 0; i < names.length; i++) {
            System.out.print("请输入学生姓名: ");
            names[i] = scanner.next();
            System.out.print("请输入学生成绩: ");
            scores[i] = scanner.nextInt();
        }

        // 按成绩排序
        for (int i = 0; i < scores.length - 1; i++) {
            for (int j = i + 1; j < scores.length; j++) {
                if (scores[i] < scores[j]) {
                    // 交换成绩
                    int tempScore = scores[i];
                    scores[i] = scores[j];
                    scores[j] = tempScore;
                    // 交换姓名
                    String tempName = names[i];
                    names[i] = names[j];
                    names[j] = tempName;
                }
            }
        }

        // 输出排序后的学生成绩
        System.out.println("打印结果:");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i] + ": " + scores[i]);
        }
    }
}

运行结果如图3-5

图3-5

七、实验考核

本实验考核采用【实验随堂查】方式开展。

每个实验完成后,在实验课上通过现场演示的方式向实验指导教师进行汇报,并完成现场问答交流。

每个实验考核满分100分,其中实验成果汇报60分,现场提问交流40分。

实验考核流程:

(1)学生演示汇报实验内容的完成情况,实验指导老师现场打分。

(2)指导老师结合实验内容进行提问,每位学生提问2-3个问题,根据回答的情况现场打分。

(3)实验考核结束后,进行公布成绩。