目录
零钱通前面几个章节在其他文章,有兴趣请自行查找。
功能介绍
本节我们将编写零钱通退出确认的功能,实现代码改进。
1. 用户输入4时,给出提示,你确认要退出码?y/n,必须输入y或者n(大小写无所谓),否则会一直循环,直到输入正确的y/n.
2.在收益入账和消费时,判断金额是否合理,并给出相应提示。
3.将面向过程的编码改成面向对象的方法。
建议:一段代码完成一个小功能,尽量不要混在一起。对后续功能拓展性也有好处。
零钱通代码
package com.jin.project.money;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* author 大力pig
*/
public class SmallChange {
public static void main(String[] args) {
boolean loopFlag = true;
Scanner scanner = new Scanner(System.in);
String choiceNumber = "";
String details = "-----------------零钱通明细-----------------";
double money = 0;
double balance = 0;
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//可以用于日期格式化
do {
System.out.println("\n========大力pig的零钱通菜单========");
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):");
choiceNumber = scanner.next();
switch (choiceNumber) {
case "1":
System.out.println(details);
break;
case "2":
System.out.print("收益入账金额: ");
money = scanner.nextDouble();
balance += money;
date = new Date();//获取当前日期
details += "\n收益入账\t+" + money + "\t\t" + sdf.format(date) + "\t余额:" + balance;
break;
case "3":
System.out.print("消费金额:");
money = scanner.nextDouble();
//money的校验范围后续完善
System.out.println("请输入消费说明:");
balance -= money;
details += "\n消费金额\t-" + money + "\t\t" + sdf.format(new Date()) + "\t余额:" + balance;
break;
case "4":
String choice = "";
while (true){
System.out.print("你确定要退出吗?y/n:");
choice = scanner.next();
if("y".equals(choice)||"Y".equals(choice)||"n".equals(choice)||"N".equals(choice)){
break;
}
}
if("y".equals(choice)||"Y".equals(choice)){
loopFlag = false;
}
break;
default:
System.out.println("你的输入有误");
}
} while (loopFlag);
System.out.println("------退出了零钱通项目------");
}
}
结果