效果展示
Utility.java
import java.util.*;
public class Utility{
private static Scanner scanner = new Scanner(System.in);
public static char readMenuSelection(){
char c;
for(; ; ){
String str = readKeyBoard(1);
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{
n = Integer.parseInt(str);
break;
}catch(NumberFormatException e){
System.out.println("数字输入错误,请重新输入:");
}
}
return n;
}
public static String readString(){
String str = readKeyBoard(8);
return str;
}
public static char readConfirmSelection(){
char c;
for(; ; ){
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if(c == 'Y' || c == 'N'){
break;
}else{
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
public static String readKeyBoard(int limit){
label:for (; ; ){
String str = scanner.next();
if(str.length() > limit){
System.out.println("输入过长,请重新出入:");
continue label;
}else{
return str;
}
}
}
}
FamilyAccount.java
class FamilyAccount{
public static void main(String[] args){
boolean isFlag = true;
int balance = 12000;
String detail = ("收支\t交易额度\t账户剩余\t交易说明\n收入\t"+balance+"\t\t"+balance+"\t\t"+"家里寄来\n");
while(isFlag){
System.out.println();
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 = Utility.readMenuSelection();
switch(selection){
case '1':
System.out.print(detail);
break;
case '2':
System.out.print("收入金额:");
int money1 = Utility.readNumber();
System.out.print("备注:");
String info1 = Utility.readString();
balance = balance + money1;
detail += ("收入\t"+money1+"\t\t"+balance+"\t\t"+info1+"\n");
System.out.println("---------------完成----------------");
break;
case '3':
System.out.print("支出金额:");
int money2 = Utility.readNumber();
System.out.print("备注:");
String info2 = Utility.readString();
balance = balance - money2;
detail += ("支出\t"+money2+"\t\t"+balance+"\t\t"+info2+"\n");
System.out.println("---------------完成----------------");
break;
case '4':
System.out.print("确认是否退出(Y/N):");
char confirm = Utility.readConfirmSelection();
if (confirm == 'Y'){
isFlag = false;
}
}
}
}
}
- 注意点: