• 2017年3月22号课堂笔记


    2017年3月22号         星期三          重度雾霾

    内容:传递参数的两种方式,对象数组的理解,面向对象思想在编写代码中的应用,方法重载

    Tips:ctrl+O--->显示该类所有方法

    一、Demo01(传参数(开始位置、结束位置、查找的姓名),输入新、旧姓名进行修改并显示是否修改成功)

    1、老师代码:

    /**
    * 实现学生的信息管理
    */
    public class StudentBiz {

    // 创建一个数组 用来保存 所有学生的姓名
    String[] names = new String[10];

    /**
    * 新增学生姓名的方法
    * @param name :用户传递过来的 参数
    * 01.循环我们事先定义好的 数组
    * 02.发现数组中有null的元素,证明 可以新增数据
    * 03.把用户传递过来的名称 放到元素为null的位置
    */
    private void addStudentName(String name) {
    for (int i = 0; i < names.length; i++) {
    if (names[i] == null) {
    names[i] = name;
    break;
    }
    }
    }

    /**
    * 显示所有学生的姓名
    */
    private void showStudentNames() {

    for (int i = 0; i < names.length; i++) {
    if (names[i] != null) {
    System.out.println(names[i]);
    }
    }
    }

    /**
    * 修改学生姓名,输入新、旧姓名,进行修改并显示是否修改成功
    * @param oldName 旧姓名
    * @param newName 新姓名
    * @return 是否修改成功
    */
    public boolean updateName(String oldName, String newName) {
    // 定义一个标记
    boolean flag = false;
    for (int i = 0; i < names.length; i++) {
    if (names[i].equals(oldName)) { // 证明可以修改姓名
    names[i] = newName;
    flag = true;
    break;
    }
    }
    return flag;
    }

    /**
    * 设计方法,通过传递三个参数(开始位置、结束位置、查找的姓名)
    来实现查询 指定学生姓名
    * @param begin 开始位置
    * @param end 结束位置
    * @param name 查找的姓名
    * @return 是否找到指定的学生
    */
    public boolean findName(int begin, int end, String name) {
    // 定义一个标记 默认没有找到
    boolean flag = false;
    for (int i = begin - 1; i < end; i++) {
    if (names[i].equals(name)) { // 找到了
    flag = true;
    break;
    }
    }
    return flag;
    }

    /**
    * 测试方法
    */
    public static void main(String[] args) {
    StudentBiz stu = new StudentBiz();
    Scanner scanner = new Scanner(System.in);
    // 循环给学生的姓名 赋值
    for (int i = 1; i <= 3; i++) {
    System.out.println("请您输入第" + i + "个学生的姓名:");
    String name = scanner.next();
    // name 称之为 实参! 实际传递的参数
    stu.addStudentName(name); // 调用学生类中 新增学生姓名的方法
    }
    // 显示所有学生的姓名
    stu.showStudentNames();
    System.out.println("请您输入从哪个位置开始查询:");
    int begin = scanner.nextInt();
    System.out.println("请您输入到哪个位置结束查询:");
    int end = scanner.nextInt();
    System.out.println("请您输入查询的学生姓名:");
    String name = scanner.next();
    // 调用查询的方法
    if (stu.findName(begin, end, name)) {
    System.out.println("找到了!");
    } else {
    System.out.println("没有找到!");
    }
    System.out.println("请您输入需要修改的学生姓名:");
    String oldName = scanner.next();
    System.out.println("请您输入修改之后的姓名:");
    String newName = scanner.next();
    // 调用修改姓名的方法
    if (stu.updateName(oldName, newName)) {
    System.out.println("修改成功!");
    } else {
    System.out.println("修改失败!");
    }

    }

    }

    二、Demo02(给学生成绩循环赋值后,输出平均分和最高分)用户只会关注我们的功能,不会去关注底层的代码实现!

    1、老师代码:

    public class ScoreTest {

    /**
    * 用户只会关注我们的功能,不会去关注底层的代码实现!
    * 我们也没有必要把代码给用户观看!
    */
    public static void main(String[] args) {
    double[] scores = new double[5];
    getScores(scores); // 循环赋值
    System.out.println("平均分是:" + getAvg(scores)); // 平均分
    System.out.println("最高分是:" + getMaxScore(scores)); // 最大值
    }

    /**
    * @param scores 用户传递过来的集合
    * @return 集合中的最大值
    */
    private static double getMaxScore(double[] scores) {
    // 先定义一个擂主
    double max = scores[0];
    for (int i = 0; i < scores.length; i++) {
    if (scores[i] > max) {
    max = scores[i];
    }
    }
    return max;
    }

    /**
    * 平均分
    * @param scores 用户传递过来的集合
    */
    private static double getAvg(double[] scores) {
    double sum = 0; // 记录总成绩
    for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
    }
    return sum / scores.length; // 返回平均分

    }

    /**
    * 循环给学生成绩赋值
    * @param scores 用户传递过来的集合
    */
    private static void getScores(double[] scores) {
    Scanner scanner = new Scanner(System.in);
    for (int i = 0; i < scores.length; i++) {
    System.out.println("请输入第" + (i + 1) + "个学生的成绩:");
    scores[i] = scanner.nextDouble();
    }
    }

    }

    三、Demo03(客户姓名排序)代码简单,老师没写

    1、自己代码:

    package cn.bdqn.test;

    //客户姓名排序类

    import java.util.Arrays;

    public class NameArray {
    public static void main(String[] args) {
    // 初始化客户姓名数组
    String[] names = { "Tom", "Jack", "Merry", "Smith", "Sunny" };
    System.out.println("************排序前*****************");
    System.out.println(Arrays.toString(names));// 输出数组信息
    namesArray(names);// 调用排序方法
    System.out.println("************排序后*****************");
    System.out.println(Arrays.toString(names));// 输出排序后数组信息
    }

    /**
    * 给客户姓名排序(顺序排列)
    * @param names 传入客户姓名数组
    */
    public static void namesArray(String[] names) {
    Arrays.sort(names);
    }
    }

     四、Demo04(模拟银行账户业务)

    1、老师代码:

    1)银行测试类

    /**
    * 模拟银行存款 取款功能
    */
    public class AccountTest {

    public static void main(String[] args) {
    // 定义一个标记 用来记录用户是否退出系统
    boolean flag = true;
    // 创建银行账户的对象
    Account account = new Account();
    do {
    System.out.println("1.存款 2.取款 0.退出");
    System.out.println("请您输入选择:");
    Scanner scanner = new Scanner(System.in);
    int choose = scanner.nextInt(); // 获取用户的输入
    switch (choose) {
    case 0:
    flag = false;
    System.out.println("感谢您的使用!");
    break;
    case 1: // 存款
    System.out.println("请您输入存款的金额:");
    double money = scanner.nextDouble();
    account.saveMoney(money);// 调用存款的方法
    break;
    case 2: // 取款
    System.out.println("请您输入取款的金额:");
    double goMoney = scanner.nextDouble();
    account.goMoney(goMoney);// 调用取款的方法
    break;
    }
    } while (flag);

    }

    }

    2)银行实体类:

    /**
    * 银行的实体类
    */
    public class Account {
    double money = 0; // 默认初始化金额为0

    /**
    * 存款的方法
    * @param money2存款的金额
    */
    public void saveMoney(double money2) {
    money += money2;
    System.out.println("存款成功!");
    System.out.println("当前的余额是:" + money);
    }

    /**
    * 取款的方法
    * @param money2 取款金额
    */
    public void goMoney(double money2) {
    if (money2 > money) { // 余额不足
    System.out.println("余额不足!! 退出系统");
    } else {
    money -= money2;
    System.out.println("取款成功");
    }
    System.out.println("当前的余额是:" + money);
    }

    }

    五、Demo05(方法重载的各种举例)

    1、老师代码:

    public class OverTest {
    /**
    * 方法重载:
    * 01.保证所有的方法在同一个类中
    * 02.方法名称一致
    * 03.参数列表不同(参数的类型,个数,参数的顺序 之间是或者的关系)
    * 04.与方法的访问修饰符以及返回值类型 无关
    */
    public static void main(String[] args) {
    int num1 = 50;
    double num2 = 50;
    int num3 = 100;
    String name = "小黑";
    getSum(num1, num2);
    getSum(num1, num3); // int类型的num3自动类型转换成double
    getSum(num1, name);
    getSum(name, num1);
    }

    private static void getSum(String name, int num1) {
    System.out.println("getSum(String,int)==" + name);
    }

    private static void getSum(int num1, String name) {
    System.out.println("getSum(int,String)==" + name);
    }

    private static void getSum(int num1, double num2) {
    System.out.println("getSum(int,double)==" + (num1 + num2));
    }

    private static void getSum(int num1, int num2) {
    System.out.println("getSum(int,int)==" + (num1 + num2));
    }

    public static String getSum() {
    return "getSum()";
    }

    }

    六、Demo06(方法传参的各种举例)

    1、老师代码:

     

     

    七、老师图示讲解对象数组(内存中图示):

     

    八、作业

    1、复习,银行账户demo的代码自己练习写一遍

    2、这周看完面向对象的视频,下周开始看高级

    3、做题,至少完成每周360道

    4、跟上老师L课程的进度,每晚回去练习,当天消化

    九、考试

    2017.03.22
    15: 21开始,16:02结束;答题时间:40分钟;检查时间:1分钟;
    成绩:96 分


    规划好时间,严格执行计划很重要。今天装载VMware感觉自己还是依赖性太强(靠苏同学的帮助太多),以后要培养独立解决问题的能力,百度从不同关键字进行搜索。多尝试,不要怕试错,这样才能成长。

    十、老师辛苦了!

  • 相关阅读:
    自动化测试先关
    hadoop集群(第二节机器信息分布表)
    hadoop集群(第一节)
    SpringCloud微服务架构学习笔记
    SpringBoot启动一个项目
    VUE框架介绍
    SpringMVC配置与使用
    Spring学习笔记(二)
    8、XML与JSON
    7、主页面访问权限控制
  • 原文地址:https://www.cnblogs.com/wsnedved2017/p/6600774.html
Copyright © 2020-2023  润新知