Utility.java
import java. util. Scanner;
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 money;
for ( ; ; )
{
String str = readKeyBoard ( 4 ) ;
try
{
money = Integer. parseInt ( str) ;
break ;
}
catch ( NumberFormatException e)
{
System. out. println ( "数字输入错误,请重新输入!" ) ;
}
}
return money;
}
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. println ( "选择错误,请重新输入!" ) ;
}
}
return c;
}
private static String readKeyBoard ( int limit) {
String line = "" ;
while ( true ) {
line = scanner. nextLine ( ) ;
if ( line. length ( ) < 1 || line. length ( ) > limit) {
System. out. print ( "输入长度(不大于" + limit + ")错误,请重新输入:" ) ;
continue ;
}
break ;
}
return line;
}
}
FamilyAccount.java
class FamilyAccount
{
public static void main ( String[ ] args)
{
int balance = 10000 ;
String details = "" ;
boolean isFlag = true ;
while ( isFlag)
{
System. out. println ( "-------------家庭收支记账软件-------------" ) ;
System. out. println ( " 1.收支明细" ) ;
System. out. println ( " 2.登记收入" ) ;
System. out. println ( " 3.登记支出" ) ;
System. out. println ( " 4.退 出\n" ) ;
System. out. println ( " 请选择(1-4):" ) ;
char selection = Utility. readMenuSelection ( ) ;
switch ( selection) {
case '1' :
System. out. println ( "-------------当前收支明细记录-------------" ) ;
System. out. println ( "收支\t账户金额\t收支金额\t说 明\n" ) ;
System. out. println ( details) ;
System. out. println ( "------------------------------------------" ) ;
break ;
case '2' :
System. out. print ( "本次收入金额:" ) ;
int addMoney = Utility. readNumber ( ) ;
System. out. print ( "本次收入说明:" ) ;
String addInfo = Utility. readString ( ) ;
System. out. println ( "-----------------登记完成-----------------\n" ) ;
balance += addMoney;
details += "收入\t" + balance + "\t\t" + addMoney + "\t\t" + addInfo + "\n" ;
break ;
case '3' :
System. out. print ( "本次支出金额:" ) ;
int costMoney = Utility. readNumber ( ) ;
System. out. print ( "本次支出说明:" ) ;
String costInfo = Utility. readString ( ) ;
if ( balance>= costMoney)
{
balance -= costMoney;
details += "支出\t" + balance + "\t\t" + costMoney + "\t\t" + costInfo + "\n" ;
} else {
System. out. println ( "余额不足。" ) ;
}
System. out. println ( "-----------------登记完成-----------------\n" ) ;
break ;
case '4' :
System. out. println ( "是否确认退出(Y/N):" ) ;
char isExit = Utility. readConfirmSelection ( ) ;
if ( isExit== 'Y' )
{
isFlag = false ;
}
}
}
}
}