课题名称
项目5:公司季度表彰系统
计划学时
15课时
内容分析
本项目将针对方法以及数组进行详细地讲解。
教学目标及基本要求
要求学生掌握方法的定义和重载、掌握数组的定义与使用。
重点及措施
教学重点:自定义方法、方法的重载、数组的定义与使用。
难点及措施
教学难点:JAVA堆栈,JVM虚拟机运行机制。
教学方式
“做,学,教” 三位一体教学。
第一、二、三、四课时
(方法、方法的重载、方法的递归)
方法的定义
在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 java定义一维数组并赋值参数名2,......]){
    执行语句
    ………
    return 返回值;
}
方法的重载
Java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。例如,定义了三个同名的add()方法,它们的参数个数或类型不同,从而形成了方法的重载。
    // 下面的方法实现了两个整数相加
    public static int add(int x, int y) {
        return x + y;
    }
    // 下面的方法实现了三个整数相加
    public static int add(int x, int y, int z) {
        return x + y + z;
    }
    // 下面的方法实现了两个小数相加
    public static double add(double x, double y) {
        return x + y;
    }
}
方法的递归
方法的递归是指在一个方法的内部调用自身的过程,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。例如,使用递归算法计算自然数之和。
public class Example24 {
    public static void main(String[] args) {
        int sum = getSum(4); // 调用递归方法,获得1~4的和
        System.out.println("sum = " + sum); // 打印结果
    }
    // 下面的方法使用递归实现 求1~n的和
    public static int getSum(int n) {
        if (n == 1) {
            // 满足条件,递归结束
            return 1;
        }
        int temp = getSum(n - 1);
        return temp + n;
    }
}
上机一:(考察知识点为自定义方法)
请编程输出一棵圣诞树。要求:
1.通过main方法调用三次输出等腰三角形,第一次输出2行,第二次输出3行,第三次输出4行。
2.通过main方法调用输出方法作为树干。
3.要求输出矩形和输出等腰三角形的方法均为用户自定义方法。
上机二:
计算矩形面积,如果用户只输入1个参数则作为正方形计算,如果输入2个参数则作为长方形计算。
1.请用户输入一个整数。
2.请用户选择是否继续输入。(y为继续输入,n为结束输入)
3.如果用户选择y,则请用户输入第2个整数。如果用户选择n则直接输出正方形面积。
4.用户输入第2个整数后,将这两个数作为矩形的长,宽,并输出矩形面积。
5.注意要有良好的用户交互。
6.要求重载的方法,一个有返回值,一个没有返回值。
第五、六、七、八课时
(一维数组、Java堆栈)
数组的定义
在Java中,可以使用以下格式来定义一个数组。
int[] x;              // 声明一个int[]类型的变量x
x = new int[100];    // 创建一个长度为100的数组
第一行代码 int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值。内存中的状态如下图所示。
第二行代码 x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化,如下图所示。
JAVA堆栈
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:
1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:Stack。黄底纹
1.    函数中定义的基本类型变量,对象的引用变量都在栈内存中分配。
2.    栈内存读取速度较快。
3.    数据一旦执行完毕,变量会立即释放,节约内存空间。
4.    栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
5.    栈内存中的数据,没有默认初始化值,需要手动设置。
堆:Heap,绿底纹。(方法区,静态区)
1.    堆内存用来存放new创建的对象和数组元素。
2.    堆内存读取速度较慢。
3.    堆内存中的实体不再被指向时,JVM定期启动垃圾回收机制,自动清除。
4.    堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器。Java的垃圾收集器会定期的自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
5.    堆内存中所有的实体都有内存地址值。
6.    堆内存中的实体是用来封装数据的,这些数据都有默认初始化值,可以不用手动赋值。
第九、十、十一、十二课时
(数组常见操作、多维数组)
数组的常见操作
数组遍历
遍历数组,打印数组中的元素。
public class Example30 {
    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]); // 通过索引访问元素
        }
    }
}
数组最值
求数组中元素的最大值。
public class Example31 {
    public static void main(String[] args) {
        int[] arr = { 4, 1, 6, 3, 9, 8 };  // 定义一个数组
        int max = getMax(arr); // 调用获取元素最大值的方法
        System.out.println("max=" + max); // 打印最大值
    }
    static int getMax(int[] arr) {
        int max = arr[0];         
// 下面通过一个for循环遍历数组中的元素
        for (int x = 1; x < arr.length; x++) {
            if (arr[x] > max) { // 比较 arr[x]的值是否大于max
                max = arr[x];  // 条件成立,将arr[x]的值赋给max
            }
        }
        return max;              // 返回最大值max
    }
}
数组排序
冒泡排序:在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。
第一步,从第一个元素开始,将相邻的两个元素依次进行比较。如果前一个元素比后一个元素大,则交换它们的位置。
第二步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似。
第三步,以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。
多维数组
二维数组的定义
第一种方式:
int[][] arr = new int[3][4];
第二种方式:
int[][] arr = new int[3][];
第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上机一:
给定一个一维数组,int[] arr = { 5, 8, 3, 14, 25 }; 请对数组做如下操作:
1.对数组进行遍历,并输出数组中所有元素的值。
2.输出数组中元素的最大值。
3.输出数组中元素的最小值。
4.新建一个数组,并使得新建数组中的元素与给定数组中元素排序相反,并输出该逆向数组。(逆向排序)
5.以上每个功能都单独编写一个方法实现。
数组例题讲解1:
第十三、十四、十五课时
(总结、测试题、综合实训)
1、总结本章内容
2、通过题库发放相关测试题,检查学生掌握情况。
3、上机练习主要针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。
综合实训:公司季度表彰系统
实训目的:
掌握多维数组的遍历输出
掌握数组元素的最值输出
掌握数组元素的求和
能合理利用循环结构解决实际问题
一个公司有三个销售小组,每个小组的人数不同,每人的季度销售额也不同。为了奖励优秀员工及优秀小组,每季度公司会把每小组销售额最多的员工和全组销售额总和最大的小组进行表彰。若把每个员工的季度销售额存放为一个二维数组,请求出每个小组的最大值,及总额最大的小组,并进行输出。
实训要求:
1.建立二维数组。int[][] arr={{32,41,38},{27,22,24,19,17},{25,14,34,21}};
2.请遍历每个小组的员工销售额,并输出“第*小组的第*号员工表现最优,季度销售额为**万元,特此表彰”
3.请比较三个小组的销售总额,并输出“本季度最佳销售小组为第*组,总销售额为**万元,特此表彰”;
4.尽量使用较少的循环实现此功能。
5.要求程序逻辑清晰,可读性强。
思考题和讨论
见资源库课程

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