2017年3月22号课堂笔记

Posted 不抽烟的香吉士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.存款\\t\\t2.取款\\t\\t0.退出");
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感觉自己还是依赖性太强(靠苏同学的帮助太多),以后要培养独立解决问题的能力,百度从不同关键字进行搜索。多尝试,不要怕试错,这样才能成长。

 

十、老师辛苦了!

 

以上是关于2017年3月22号课堂笔记的主要内容,如果未能解决你的问题,请参考以下文章

2017年4月3号课堂笔记

2017年5月24号课堂笔记

2017年5月29号课堂笔记

2017年6月12号课堂笔记

2017年06月30号课堂笔记

2017年5月12号课堂笔记