java笔记之项目一:零钱通总结

系列文章目录

欢迎提问;


一、运行界面

在这里插入图片描述

一、思路

1.基本功能及结构实现。
2.功能-零钱通明细。
(展示明细,可以三种方式:1.数组。2.对象。3.字符串拼接。此处采用的是字符串拼接,巧妙地实现了数据的展示。)
3.功能收益入账。
4.功能消费。
5.功能退出。

代码改进:
1.退出:输入4退出时,提示“你确定要退出吗?y/n”,必须输入y或n,输人其他就重新提示输入,直到输入y或n;
2.收益入账和消费时,判断金额是否合理,并给出相应提示。
3.将过程编程改为oop(面向对象)编程.

二、代码

1.代码如下

代码如下:

package com.hspedu.smallchange;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//1.基本结构及功能实现.
//2.完成零钱通明细。数组、对象、String拼接。

public class SmallChangeSys {
    public static void main(String[] args) {
        //定义相关的变量
        boolean loop=true;
        String key="";
        //3.完成收益入账。money和余额balance。
        double money=0;
        double balance=0;
        //4.完成消费。-定义新变量,保存消费的原因。
        String note="";

        Scanner sc = new Scanner(System.in);
        Date date=null;//java.util.Date类型,表示日期。
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String details="\n====================零钱通明细====================";

        do {
            System.out.println("------------------零钱通菜单------------------");
            System.out.println("\t\t\t1.零钱通明细");
            System.out.println("\t\t\t2.收益入账");
            System.out.println("\t\t\t3.消费");
            System.out.println("\t\t\t4.退    出");
            System.out.print("请选择(1-4):");
            key=sc.next();
            switch (key){//case后的字符?
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    System.out.print("请输入收益金额:");
                    money=sc.nextDouble();
                    //money的值需要校验,毕竟不能是-100等。
                    if(money<=0){
                        System.out.println("收益金额必须>=0");
                        break;
                    }
                    balance+=money;
                    //时间需要Date对象。获取现在的时间。
                    date=new Date();
                    //字符串拼接
                    details+="\n收益入账\t+"+money+"\t"+simpleDateFormat.format(date)+"\t余额:"+balance;
                    break;
                case "3":
                    System.out.print("\n请输入消费金额: ");//也要进行数据的校验。
                    money=sc.nextDouble();
                    System.out.print("请输入消费原因:");
                    note=sc.next();

                    if(money<=0||money>balance){
                        System.out.println("消费金额必须在0-"+balance+"之间");
                        break;
                    }
                    balance-=money;
                    date=new Date();
                    details+="\n"+note+"\t-"+money+"\t"+simpleDateFormat.format(date)+
                            "\t余额:"+balance;
                    break;
                case "4":
                    //5.完成退出功能。循环输入指令,用while-break;,定义一个变量接收字符。String choice;
                    String choice="";
                    while(true){
                        System.out.println("你确定要退出吗?y/n");
                        choice=sc.next();
                        if(choice.equals("y")||choice.equals("n")){
                            break;
                        }
                    }
                    if(choice.equals("y")){
                        loop=false;//1只需改这一个就能退出了。
                    }
                    break;
                    default:
                        System.out.println("选择有误,清重新选择");

            }

        } while(loop);//菜单适合do-while,至少显示一次。
        System.out.println("你退出了零钱通项目");

    }
}

2.知识总结

(1)以一定形式展现当前时间。

Date date=null;//java.util.Date类型,表示日期。
在创建对象时即显示当前系统时间:
在这里插入图片描述
以2023-02-18 08:38形式展现:
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm”);
(是java.text.SimpleDateFormat类型.)
使用:
sdf.format(date);
在这里插入图片描述

(2)循环结构的使用

1.显示菜单,因为要至少显示一次,所以用do-while循环比较合适。
2.退出时要给出提示“你确定要退出吗y/n”,此处适用于while-break结构.若在方法中定义,则是while-return结构。

(3)编程思想的涉及

1.一段代码完成一个小功能,尽量不要混到一起。
2.判断金额是否合理等问题时,找不正确的条件,给出提示,然后break;(找正确的很麻烦,反之,则比较简单,且扩展性比较好。)
3.过关斩将。先把整体的框架写出来,然后再一个功能一个功能的写。然后再进行数据校验,修改为面向对象编程。

(4)switch的总结。

switch(表达式){
case ‘常量1’:代码块1;break;
}
1.case子句的值必须是常量,不能是变量。
2.switch括号里面是表达式,返回值类型必须是(byte,short,int,char,[enum]枚举,String)。
3.switch表达式的返回值的数据类型应和case后的常量类型一致,或者可以自动转成可以相互比较的类型,如常量是int,表达式输入是字符。

将过程编程改为oop编程

一个功能类,一个应用类。然后就是为功能创建方法,复制修改的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值