• Java-Project-01


    
    
    import java.util.Scanner;
    /**
    Utility工具类:
    将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
    */
    public class Utility {
        private static Scanner scanner = new Scanner(System.in);
        /**
        用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
        */
        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;
        }
        /**
        用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
        */
        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;
        }
        /**
        用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
        */
        public static String readString() {
            String str = readKeyBoard(8);
            return str;
        }
        
        /**
        用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
        */
        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
    FamilyAccount{ public static void main(String[] args){ boolean isFlag = true; //用于记录用户的收入和支出的详情 String details = "收支 账户金额 收支金额 说 明 "; //初始金额 int balance = 10000; while(isFlag){ System.out.println("-----------------家庭收支记账软件----------------- "); System.out.println(" 1 收支明细"); System.out.println(" 2 登记收入"); System.out.println(" 3 登记支出"); System.out.println(" 4 退 出 "); System.out.print(" 请选择(1-4):"); //获取用户的选择:1-4 char selection = Utility.readMenuSelection(); switch(selection){ case '1': //System.out.println("1.收支明细"); System.out.println("-----------------当前收支明细记录-----------------"); System.out.println(details); System.out.println("--------------------------------------------------"); break; case '2': //System.out.println("2.登记收入"); System.out.print("本次收入金额:"); int addMoney = Utility.readNumber(); System.out.print("本次收入说明:"); String addInfo = Utility.readString(); //处理balance balance += addMoney; //处理details details += ("收入 " + balance + " " + addMoney + " " + addInfo + " "); System.out.println("---------------------登记完成--------------------- "); break; case '3': //System.out.println("3.登记支出"); System.out.print("本次支出金额:"); int minusMoney = Utility.readNumber(); System.out.print("本次支出说明:"); String minusInfo = Utility.readString(); //处理balance if(balance >= minusMoney){ balance -= minusMoney; //处理details details += ("支出 " + balance + " " + minusMoney + " " + minusInfo + " "); }else{ System.out.println("支出超出账户额度,支付失败"); } System.out.println("---------------------登记完成--------------------- "); break; case '4': //System.out.println("4.退 出"); System.out.print("确认是否退出(Y/N):"); char isExit = Utility.readConfirmSelection(); if(isExit == 'Y'){ isFlag = false; } //break; } } } }
  • 相关阅读:
    【注册验证】 控制器(添加数据+后台验证)
    AJAX 简介
    我的博客生涯
    windows xp sp3 下载地址
    get、set、add、remove → (字段、属性)+(委托、事件)
    ArcObjects整体介绍
    委托
    对字符串的处理的又一个强大的工具,正则表达式
    对象序列化存在的原因
    关于文件操作的几个类
  • 原文地址:https://www.cnblogs.com/LXL616/p/10809145.html
Copyright © 2020-2023  润新知