java学习之路 之 面向对象编程-面向对象-第一个小项目P1-FAACS

来源:互联网 发布:js跳转指定页面 编辑:程序博客网 时间:2024/05/17 01:00
public class FamilyAccount {public static void main(String[] args) {// 1) 声明基本金变量 初值为10000int balance = 10000; // 用于记录当前金额// 2) 声明记账本变量 初值为表头String details = "收支\t账户金额\t收支金额\t说    明\n";// 3) 声明控制循环的boolean变量, 初值为trueboolean loopFlag = true;// 4) 以上面的布尔变量为条件写一个循环do {// 5) 打印主菜单System.out.println("-----------------家庭收支记账软件-----------------");           System.out.println("");           System.out.println("       1 收支明细");            System.out.println("       2 登记收入");           System.out.println("       3 登记支出");           System.out.println("       4 退    出");            System.out.println("");             System.out.print("       请选择(1-4) : ");// 6) 从键盘读取用户选择// 必须使用工具类的工具方法, 方法调用 通过类名.方法名(实参)char ch = Utility.readMenuSelection();// 方法的返回值是一个char型值, 声明一个char型变量保存这个返回值// 7) 对这个返回值进行分支 switch (ch) {// 8) 如果用户选择了1 case '1' :// 打印输出记账本System.out.println(details);break;// 9) 如果用户选择了2 case '2' :/*本次收入金额:1000本次收入说明:劳务费*/System.out.print("本次收入金额 : ");// 获取用户从键盘输入的金额// 调用工具类的方法readNumber, 这个方法会返回一个int型的值, 声明一个int型变量接收返回值int money = Utility.readNumber();System.out.print("本次收入说明 : ");// 获取用户从键盘输入的说明// 调用工具类的方法readString, 这个方法会返回一个String值, 声明一个String类型的变量接收返回值String info = Utility.readString();// 把收入的金额累加到余额变量中balance += money;// 创建一个临时字符串, 内容:收入    11000           1000            劳务费// "收入" + 当前余额 + 本次收入金额 + 本次收入说明\n String tmp = "收入" + "\t" + balance + "\t\t" + money + "\t\t" + info + "\n";// 把临时字符串串接到记事本的后面 +=details += tmp;break;// 10) 如果用户选择了3case '3' :// 登记支出 System.out.print("本次支出金额 : ");// 获取用户从键盘支出的金额// 调用工具类的方法readNumber, 这个方法会返回一个int型的值, 声明一个int型变量接收返回值money = Utility.readNumber();System.out.print("本次支出说明 : ");// 获取用户从键盘支出的说明// 调用工具类的方法readString, 这个方法会返回一个String值, 声明一个String类型的变量接收返回值info = Utility.readString();// 把支出的金额从余额变量减去balance -= money;// 创建一个临时字符串, 内容:支出    11000           1000            劳务费// "支出" + 当前余额 + 本次支出金额 + 本次支出说明\n tmp = "支出" + "\t" + balance + "\t\t" + money + "\t\t" + info + "\n";// 把临时字符串串接到记事本的后面 +=details += tmp;break;// 11) 如果用户选择了4case '4' :System.out.print("确认是否退出(Y/N) : "); char confirm = Utility.readConfirmSelection();if (confirm == 'Y') {//把控制循环的布尔值改为falseloopFlag = false;}break;}} while (loopFlag);}}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.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;}}

3 0
原创粉丝点击