/*
读取键盘上的1,2,3,4
从键盘上读取数字金额数据,数字大小不超过4位,返回输入的数字并返回
从键盘中读取收入和支出说明,该方法从键盘中读取一个字符串并返回
从键盘读指定长度的取字符串,返回一个字符串
*/
import java.util.Scanner;
public class MyUtil{
private static Scanner sc = new Scanner(System.in);
public static char readMeaumSelection(){
char c;
for(;;) {
String str = readKeyBoard(1);
char c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4') {
System.out.println("输入错误,请从新输入");
} else break;
}
return c;
}
public static int readNumber(){
int n;
for(;;){
String str = readKeyBoard(4);
try{
int n = Integer.parseInt(str);
break;
}
catch (NumberFormatException e){
System.out.println("输入有误,请从新输入");
}
}
return n;
}
public static String readString(){
return readKeyBoard(8);
}
public static char readConfirmSelection(){
char c ;
System.out.println("请输入Y|N");
for(;;){
String str = readKeyBoard(1).toUpperCase();
char c = str.charAt(0);
if (c == 'Y' || c == 'N'){
break;
}else{
System.out.println("你输入的有误,请从新输入");
}
}
return c;
}
public static String readKeyBoard(int length){
String str;
for(;;){
str = sc.next();
if(str.length()>length){
System.out.println("输入数据超出范围,请重新输入" + length + "个数据:");
}else break;
}
return str;
}
}
public class FamilyAccount{
public static void main(String[] args){
boolean isFlag = true;
int balance = 1000;
String details = " ";
while(isFlag){
System.out.println("---------------家庭收支记账软件------------------");
System.out.println(" 1.收支明细");
System.out.println(" 2.登记收入");
System.out.println(" 3.登记支出");
System.out.println(" 4.退 出");
System.out.print(" 请输入(1~4):");
char selection = MyUtil.readMeaumSelection();
System.out.println();
switch(selection){
case '1':
System.out.println("---------------当前收支明细记录----------------");
System.out.println("收 支\t\t账户金额\t\t收支金额\t\t说 明");
System.out.println(datails);
System.out.println("----------------------------------------------");
System.out.println();
break;
case '2':
System.out.println("---------------当前收支明细记录----------------");
System.out.println("本次输入金额");
int money = MyUtil.readString();
balance += money;
System.out.println("本次收入明细");
String info = MyUtil.readString();
details +="收 入\t\t" + balance + "\t\t" + money + "\t\t\t" + info + "\n";
System.out.println();
break;
case '3':
System.out.println("---------------当前收支明细记录----------------");
System.out.println("本次支出金额");
int money = MyUtil.readString();
balance -= money;
System.out.println("本次支出明细");
String info = MyUtil.readString();
details +="收 入\t\t" + balance + "\t\t" + money + "\t\t\t" + info + "\n";
System.out.println();
break;
case '4':
char confirmSelection = MyUtil.readConfirmSelection();
if (confirmSelection == 'Y'){
isFlag = false;
System.out.println("退出成功!");
}
break;
}
}
}
}