文章目录
- 一、运行界面
- 一、思路
- 二、代码
- 1.代码如下
- 2.知识总结
- (1)以一定形式展现当前时间。
- (2)循环结构的使用
- (3)编程思想的涉及
- (4)switch的总结。
- 将过程编程改为oop编程
一、运行界面
一、思路
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编程
一个功能类,一个应用类。然后就是为功能创建方法,复制修改的过程。