zoukankan      html  css  js  c++  java
  • 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感觉自己还是依赖性太强(靠苏同学的帮助太多),以后要培养独立解决问题的能力,百度从不同关键字进行搜索。多尝试,不要怕试错,这样才能成长。

    十、老师辛苦了!

  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/wsnedved2017/p/6600774.html
Copyright © 2011-2022 走看看