韩顺平JAVA-D28

还是属于Object类

0324 hashCode

0325 toString

0326 finalize

把对象置成垃圾

默认finalize在object类里什么都不做,在car里重写

0327 断点调试介绍

B b = new A();

左边:编译类型 右边:运行类型

断点调试按运行类型来看

0328 - 0333 断点调试案例

案例一:F8

案例二:越界异常

案例三:追源码

案例四:执行到下一个断点F9

案例五:课后练习

object 的运行类型person类,进入到person类的ToString

案例六:动态绑定机制的运行过程

0334 - 0341 零钱通项目

0.零钱通介绍:

1.零钱通菜单:

化繁为简

1.完成显示菜单,可以选择菜单,并给出相应提示

2.完成零钱通明细

3.完成收益入账

4.完成消费

5.退出

6.用户输入4退出时,给出提示"确定要退出吗,输入y/n,

如果没有正确输入,循环到正确输入为止。"

2.零钱通明细:

收益和入账如何实现:

(1)收益和入账保存到数组

(2)使用对象

(3)使用 String 拼接

3.零钱通收益

定义新的变量

Date date = null;//date包是用来表示日期的
        String details = "----------------零钱通明细----------------";
        //用于日期格式化的函数
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

        sdf.format(date)//格式化之后的日期

4.消费

功能基本已经实现

package com.smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeSys {
    public static void main(String[] args) {
        boolean loop = true;
        //double money = 0.00;
        double balance = 0.00;
        Date date = null;//date包是用来表示日期的
        date = new Date();//获取到当前的日期
        String details = "----------------零钱通明细----------------";
        //String details2 = "----------------消费----------------";
        //用于日期格式化的函数
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        do{
            Scanner myScanner = new Scanner(System.in);
            System.out.println("================零钱通菜单================");
            System.out.println("              1 零钱通明细");
            System.out.println("              2 收益入账");
            System.out.println("              3 消费");
            System.out.println("              4 退   出");
            System.out.println("请选择(1-4):");
//          System.out.println("----------------零钱通明细----------------");
            char c1 = myScanner.next().charAt(0);

            switch (c1){
                case '1':
                    System.out.println(details);
                    break;
                case '2':
                    System.out.println("----------------收益入账----------------");
                    System.out.print("收益入账金额:");
                    double money = myScanner.nextDouble();//入账金额
                    //入账金额应当校验一下
                    balance += money;
                    //date = new Date();//获取到当前的日期
                    //拼接收益入账信息到details
                    details += "\n收益入账\t+" + money +"\t" + sdf.format(date) +"\t余额:" + balance;
                    //System.out.println(details);
                    break;
                case '3':
                    System.out.println("----------------消费----------------");
                    System.out.println("消费的店铺:");
                    String shop = myScanner.next();
                    System.out.println("消费金额:");
                    double money2 = myScanner.nextDouble();//消费金额
                    balance -= money2;
                    details += "\n" + shop +"\t-" + money2 + "\t" + sdf.format(date) +"\t余额:" + balance;
                    //System.out.println(details);
                    break;
                case '4':
                    System.out.println("----------------退   出----------------");
                    loop = false;
                    break;
                default:
                    System.out.println("选择有误,请重新选择");
            }

        }while(loop);
        System.out.println("----------------退出了零钱通项目...----------------");
    }
}

5.退出确认

用户输入4退出时,给出提示"确定要退出吗,输入y/n,如果没有正确输入,循环到正确输入为止。

6.零钱通金额效验

7.OOP编程

package com.smallchange.smallchangeOOP;
/**
 * 直接调用smallchangeOOP对象,显示主菜单
 * **/
public class smallchangeAPP {
    public static void main(String[] args) {
        new SmallChangeSystemOOP().mainMenu();
    }
}
package com.smallchange.smallchangeOOP;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//完成零钱通的各个功能的类
//使用面向对象编程
//将各个功能对应成一个方法
public class SmallChangeSystemOOP {
    //属性..
    boolean loop = true;//是否还要循环显示
    String c1 = "";
    String details = "----------------零钱通明细----------------";
    double balance = 0.00;
    Date date = null;//date包是用来表示日期的
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    Scanner myScanner = new Scanner(System.in);

    //显示零钱通菜单,并可以选择
    public void mainMenu(){
        do {
            System.out.println("\n================ 零钱通菜单================");
            System.out.println("\t\t\t1 零钱通明细");
            //System.out.println("              1 零钱通明细");
            System.out.println("\t\t\t2 收益入账");
            System.out.println("\t\t\t3 消费");
            System.out.println("\t\t\t4 退   出");
            System.out.println("请选择(1-4):");
            //System.out.println("----------------零钱通明细----------------");
            c1 = myScanner.next();

            switch (c1) {
                case "1":
                    this.detail();
                    break;
                case "2":
                    this.income();
                    break;
                case "3":
                    this.pay();
                    break;
                case "4":
                    this.exits();
                    break;
                default:
                    System.out.println("选择有误,请重新选择");
            }
        }while(loop);
    }

            //完成零钱通明细
            public void detail () {
                while(loop){
                    System.out.println("\n================零钱通菜单================");
                    System.out.println("\t\t\t1 零钱通明细");
                    //System.out.println("              1 零钱通明细");
                    System.out.println("\t\t\t2 收益入账");
                    System.out.println("\t\t\t3 消费");
                    System.out.println("\t\t\t4 退   出");
                    System.out.println("请选择(1-4):");
                    //System.out.println("----------------零钱通明细----------------");
                    c1 = myScanner.next();

                    switch (c1) {
                        case "1":
                            System.out.println(details);
                            break;
                        case "2":
                            System.out.println("----------------收益入账----------------");
                            System.out.print("收益入账金额:");
                            double money = myScanner.nextDouble();//入账金额
                            //找出不正确的金额条件,给出提示或直接break
                            //入账金额应当校验一下
                            if (money <= 0) {
                                System.out.println("入账金额应大于0元");
                                break;
                            } else {
                                balance += money;
                                date = new Date();//获取到当前的日期
                                //拼接收益入账信息到details
                                details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
                                //System.out.println(details);
                            }
                            break;
                        case "3":
                            System.out.println("----------------消费----------------");
                            System.out.println("消费的店铺:");
                            String shop = myScanner.next();
                            System.out.println("消费金额:");
                            double money2 = myScanner.nextDouble();//消费金额
                            //有一个范围的效验
                            if (money2 < 0 || money2 > balance) {
                                System.out.println("消费金额应在0-" + balance);
                                break;
                            } else {
                                balance -= money2;
                                details += "\n" + shop + "\t-" + money2 + "\t" + sdf.format(date) + "\t余额:" + balance;
                                //System.out.println(details);
                            }
                            break;
                        case "4":
                            boolean loop2 = true;
                            do {
                                System.out.println("是否确认退出(y/n):");
                                char answer = myScanner.next().charAt(0);
                                if (answer == 'y') {
                                    System.out.println("----------------退   出----------------");
                                    loop = false;
                                    loop2 = false;
                                } else if (answer == 'n') {
                                    loop = true;
                                    loop2 = false;
                                } else {
                                    loop = true;
                                    loop2 = true;
                                }
                                //System.out.println("----------------退   出----------------");
                                //loop = false;
                                //break;
                            } while (loop2);
                            break;

                        default:
                            System.out.println("选择有误,请重新选择");
                    }

                }
                System.out.println("----------------退出了零钱通项目...----------------");
            }

            //完成收益入账
            public void income () {
                System.out.println("----------------收益入账----------------");
                System.out.print("收益入账金额:");
                double money = myScanner.nextDouble();//入账金额
                //找出不正确的金额条件,给出提示或直接break
                //入账金额应当校验一下
                if (money <= 0) {
                    System.out.println("入账金额应大于0元");
                } else {
                    balance += money;
                    date = new Date();//获取到当前的日期
                    //拼接收益入账信息到details
                    details += "\n收益入账\t+" + money + "\t" + sdf.format(date) + "\t余额:" + balance;
                    //System.out.println(details);
                }
            }

            public void pay () {
                System.out.println("----------------消费----------------");
                System.out.println("消费的店铺:");
                String shop = myScanner.next();
                System.out.println("消费金额:");
                double money2 = myScanner.nextDouble();//消费金额
                //有一个范围的效验
                if (money2 < 0 || money2 > balance) {
                    System.out.println("消费金额应在0-" + balance);
                    return;
                } else {
                    balance -= money2;
                    details += "\n" + shop + "\t-" + money2 + "\t" + sdf.format(date) + "\t余额:" + balance;
                    //System.out.println(details);
                }
            }

            //退出
            public void exits () {
                boolean loop2 = true;
                while(loop2) {
                    System.out.println("是否确认退出(y/n):");
                    char answer = myScanner.next().charAt(0);
                    if (answer == 'y') {
                        System.out.println("----------------退   出----------------");
                        loop = false;
                        loop2 = false;
                    } else if (answer == 'n') {
                        loop = true;
                        loop2 = false;
                    } else {
                        loop = true;
                        loop2 = true;
                    }
                    //System.out.println("----------------退   出----------------");
                    //loop = false;
                    //break;
                }
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值