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

十、老师辛苦了!

时间: 2024-10-21 12:43:32

2017年3月22号课堂笔记的相关文章

2017年5月22号课堂笔记

2017年5月22号 星期一 大雨 内容:盒子模型,浮动 备注:5月24日补上 一.盒子模型 01.边框border 仿写老师代码: <!DOCTYPE html> <html><head lang="en"> <meta charset="UTF-8"> <title>边框</title> <style type="text/css"> div{ /* 上 to

2017年5月12号课堂笔记

2017年5月12号 星期五 空气质量:轻度污染(昨天的北风转今天的南风) 内容:html表格的基本使用,表格跨行跨列,高级表格,播放音乐,播放视频,网页布局,iframe内联框架: 文本框,密码框,单选按钮,复选框,下拉框  备注:周日晚想起来补上的周五课堂笔记(一带一路今天开会天气好晴朗) 一.html表格的基本使用 模仿老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset=&q

2017年5月29号课堂笔记

2017年5月29号 阴天 空气质量:良 内容:JavaScript基础:输入输出及确认,统计字符出现的次数,系统函数,自定义函数, 自定义函数和事件的连用,四则运算小练习,方法的作用域 JavaScriptBOM对象(下次课堂笔记再补上,一起记录)history,location,open,document 一.输入输出及确认 仿写老师代码: <!DOCTYPE html><html><head lang="en"> <meta charse

2017年5月24号课堂笔记

2017年5月24号 星期三 晴 空气质量:优 内容:定位属性,CSS3动画  备注:5月25日补课堂笔记 一.定位属性  01.定位属性 仿写老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>定位属性</title> <!-- position:定位属性 属性值: 01.static:默认值

2017年4月3号课堂笔记

2017年4月3号  重度雾霾 内容:log4j,集合框架(ArrayList,LinkedList) 一.log4j 老师代码: 1)log4j.properties: log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.

2017年5月5号课堂笔记

2017年5月5号 星期五 沙尘暴转晴 内容:U2 HTML5第一节课 一.01第一个霸气的网页 1.老师代码: <!DOCTYPE html><html><head lang="en"> <!-- html注释 不安全 用户在网页中查看源代码可以看到 w3c : World wide Web Consortium (万维网联盟) 官网: www.w3.org www.chinaw3c.org w3c标准: 01.结构化标准语言 html xh

2017年6月19号课堂笔记

2017年6月19号 星期一 晴转多云 空气质量:轻度污染~良 内容:表单验证 01表单选择器:02String对象实现表单验证:03登录成功页面: 04验证错误信息的显示:05正则验证年龄:06Html5validaty 备注:老师归来第一节课,大家都很开心,学习的感觉又回来了~ 一.表单选择器 老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"

2017年6月21号课堂笔记

2017年6月21号 星期三 多云转雷阵雨 空气质量:中度污染~轻度污染 内容: JavaScript 原型式面向对象 01基于Object的对象的方式创建对象:02使用字面量赋值方式创建对象 03构造函数:04原型对象:05原型链 备注:老师休养回来第二节课,希望他手术的伤口尽快愈合,远离伤病痛苦. 一.基于Object的对象的方式创建对象 1.老师代码: <!DOCTYPE html><html><head lang="en"> <meta

2017年07月03号课堂笔记

2017年07月03号 星期一  多云 空气质量:轻度污染~中度污染 内容:MySQL第四节课 in和not in:两个表的内连接:exists和not exsits的使用:all,any和some: 使用子查询的注意事项:sql优化(使用exists 代替 in):group by:两道mysql面试题 一.in和not in 1.in-- 使用in替换 等于(=)的子查询语句!-- in后面的子查询可以返回多条记录! 1)例题1 -- 查询年级编号是1或者2 的 所有学生列表 SELECT