1、Utility.java类:
package cn.edu.bzu.stu.ts;
import java.util.Scanner;
public class Utility {
private static Scanner scan=new Scanner(System.in);
public static char ReadMenuSelection() {//
char c;
for( ; ; ) {
String str=scan.nextLine();
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 num;
for( ; ; ) {
String str=scan.nextLine();
try {
num=Integer.parseInt(str);
break;
}catch(NumberFormatException e) {
System.out.println("数字输入错误,请重新输入:");
}
}
return num;
}
public static String ReadString() {
String str=scan.nextLine();
return str;
}
public static char ReadConfirmSelection() {
char c;
for( ; ; ) {
String str=scan.nextLine().toUpperCase();
c=str.charAt(0);
if(c=='Y' || c=='N')
break;
else
System.out.println("选择错误请重新输入:");
}
return c;
}
private static String ReadKeyBoard(int limit) {
String line="";
while(scan.hasNext()) {
line=scan.nextLine();
if(line.length()<1 || line.length()>limit) {
System.out.println("输入长度(不大于"+limit+"),错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
2、FamilyAccount类:
package cn.edu.bzu.stu.ts;
public class FamilyAccount {
public static void main(String[] args) {
String details="收支\t账户金额\t收支金额\t说 明\n";
int balance=10000;
boolean isFlag=true;
do {
System.out.println("-----------------家庭收支记账软件-----------------");
System.out.println(" 1 收支明细\r\n");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出\\n");
System.out.print(" 请选择(1-4):");
char key=Utility.ReadMenuSelection();
System.out.println();
switch(key) {
case '1'://收支明细
System.out.println("-----------------当前收支明细记录-----------------");
System.out.println(details);
System.out.println("--------------------------------------------------");
break;
case '2'://登记收入
System.out.print("本次收入金额:");
int money=Utility.ReadNumber();
System.out.print("本次收入说明:");
String str=Utility.ReadString();
balance+=money;
details+="收入\t"+balance+"\t"+money+"\t"+str;
System.out.println("---------------------登记完成---------------------");
break;
case '3':
System.out.print("本次支出金额:");
int money1=Utility.ReadNumber();
System.out.print("本次支出说明:");
String str1=Utility.ReadString();
if(money1>balance)
System.out.println("您的支出超出预期.");
else {
balance+=money1;
details+="支出\t"+balance+"\t"+money1+"\t"+str1;
System.out.println("---------------------登记完成---------------------");
}
break;
case '4':
System.out.println("确认是否退出(Y/N):");
char ch=Utility.ReadConfirmSelection();
if(ch=='Y') isFlag=false;
break;
}
}while(isFlag);
}
}