一、家庭收支记录软件
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
.print("选择错误,请重新输入:");
} 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
.print("数字输入错误,请重新输入:");
}
}
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
;
}
private static String
readKeyBoard(int limit
) {
String line
= "";
while (scanner
.hasNext()) {
line
= scanner
.nextLine();
if (line
.length() < 1 || line
.length() > limit
) {
System
.out
.print("输入长度(不大于" + limit
+ ")错误,请重新输入:");
continue;
}
break;
}
return line
;
}
}
class Family{
public static void main(String
[] args
){
boolean isFlag
= true;
String details
= "收支\t账户金额\t收支金额\t说 明\n";
Scanner scan
= new Scanner(System
.in
);
int salary_init
= 1000;
while(isFlag
){
System
.out
.println("------------------家庭收支记录软件------------------\n");
System
.out
.println(" 1 收支明细");
System
.out
.println(" 2 登记收入");
System
.out
.println(" 3 登记支出");
System
.out
.println(" 4 退 出\n");
System
.out
.print(" 请选择(1-4):");
char selection
= Utility
.readMenuSelection();
switch(selection
){
case '1':
System
.out
.println("------------------当前收支明细记录------------------");
System
.out
.println(details
);
System
.out
.println("----------------------------------------------------");
break;
case '2':
System
.out
.print("本次收入金额:");
int salary_in
= Utility
.readNumber();
System
.out
.print("说明:");
String introduction_in
= Utility
.readString();
System
.out
.println("------------------登记完成------------------");
salary_init
= salary_in
+ salary_init
;
details
+= ("收入\t" + salary_init
+ "\t\t"+salary_in
+"\t\t"+introduction_in
+"\n");
break;
case '3':
System
.out
.print("本次支出金额:");
int salary_out
= Utility
.readNumber();
System
.out
.print("说明:");
String introduction_out
= Utility
.readString();
System
.out
.println("------------------登记完成------------------");
salary_init
= salary_init
- salary_out
;
details
+= ("支出\t" + salary_init
+ "\t\t"+salary_out
+"\t\t"+introduction_out
+"\n");
break;
case '4':
System
.out
.println("确定要退出吗?【Y/N】");
char exitSelection
= Utility
.readConfirmSelection();
if (exitSelection
== 'Y'){
isFlag
= false;
}
break;
}
}
}
}
转载请注明原文地址: https://lol.8miu.com/read-25242.html