尚硅谷Javase项目一(家庭收支记账软件)

class FamilyCount{
          
   
	public static void main(String[] args){
          
   
		boolean flag=true;
		String details="收支	账户信息	收支金额	说  明"+"
";
		int balance = 10000;
		while(flag){
          
   
		System.out.println("**********家庭收支记账软件**********");
		System.out.println("          1.收支明细");
		System.out.println("          2.登记收入");
		System.out.println("          3.登记支出");
		System.out.println("          4.退    出
");
		System.out.println("          请选择(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.println("本次收入金额:");
				int money=Utility.readNumber();
				System.out.println("本次收入说明:");
				String info=Utility.readString();
				balance+=money;
				details+=("收入"+"	"+balance+"	"+"	"+money+"	"+"	"+info+"
");
				break;
			case 3:
				//System.out.println("3.登记支出");
				System.out.println("本次支出金额:");
				int putmoney=Utility.readNumber();
				System.out.println("本次支出说明:");
				String putinfo=Utility.readString();
				balance-=putmoney;
				details+=("支出"+"	"+balance+"	"+"	"+putmoney+"	"+"	"+putinfo+"
");
				break;
			case 4:
				//System.out.println("4.退    出");
				System.out.println("确认是否退出(Y/N)");
				char exit=Utility.readConfirmSelection();
				if(exit==Y){
          
   
					flag=false;
				}
				break;
		}
	}
  }
}

##工具类:

import java.util.Scanner;

/**
 * 工具类
 * 提供具体的人机界面交互的方法
 */
public class Utility {
          
   
    private static Scanner scanner = new Scanner(System.in);

    /**
     * 从键盘读取信息
     * @param i
     * @return
     */
    private static String readKeyBoard(int limit) {
          
   

        label:for (;;){
          
   
            String str = scanner.next();
            if (str.length() > limit){
          
   
                System.out.println("输入过长,请重新输入:");
                continue label;
            }else {
          
   
                return str;
            }
        }
    }

    /**
     * 用于界面的选择,该方法读取键盘,如果用户键入”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.println("数字输入有误,请重新输入:");
            }
        }
        return n;
    }

    /**
     * 用于收入和支出说明的输入,该方法从键盘读取一个不超过八位长度的字符串,并将其作为方法的返回值
     */
    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.println("选择错误,请重新输入:");
            }
        }
        return c;
    }
}
经验分享 程序员 微信小程序 职场和发展