Java家庭记账小软件

通过以下这个小案例,来作为Java入门的第一课。虽然之前学过C#语言和C语言,但还是仔仔细细的敲了以下代码,并且都有详细的注释。相信这对有过其它编程语言基础的你并不难。
先来看下要实现的效果:
在这里插入图片描述
首先要写个工具类,其中readKeyBoard方法要多注意

import java.util.Scanner;

/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节
*/
public class Utility
{
    
    
	private static Scanner scanner=new Scanner(System.in);

	/*
    定义一个readKeyBoard函数,用于从键盘读取参数限制长度的一行内容
     */
    private static String readKeyBoard(int limit) {
    
    
        String line = "";

        while (scanner.hasNext()) {
    
    
            /*
            Scanner类中的hasNext方法读取的是boolean型的值,用于检测输入是否还有其他单词,有则真无则假
            官方解释:当执行到hasNext()时,它会先扫描缓冲区中是否有字符,有则返回true,继续扫描。
                    直到扫描为空,这时并不返回false,而是将方法阻塞,等待你输入内容然后继续扫描。
            */
            line = scanner.nextLine();       //将从键盘上读取到的内容赋给line,为字符串类型
            if (line.length() < 1 || line.length() > limit) {
    
         //当输入字符串长度小于1或输入字符串长度超过参数限制时执行
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;       //再次执行循环来读取键盘输入的有意义的值
            }
            break;     //当读取到的字符串符合要求则终止循环,执行循环外的下一条语句返回字符串
        }
        return line;             //返回读取到的指定长度内的字符串字面量
    }

	/**
	菜单界面的选择
	该方法读取键盘,如果用户输入‘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.println("输入错误,请重新输入:");
			}
			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;
	}

	/**
	用于收入和支出说明的输入。
	该方法从键盘读取一个长度不超过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;
	}
}

main()函数里的代码不多


class FamilyAccount
{
    
    
	public static void main(String[] args)
	{
    
    
		boolean isFlag=true;
		//用于记录用户收入和支出详情
		String details="收支\t账户金额\t收支金额\t说  明\n";
		//出入金额
		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+=("收入\t"+balance+"\t\t"+addMoney+"\t\t"+addInfo+"\n");
					System.out.println("------------------登记完成--------------------\n");
					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+=("支出\t"+balance+"\t\t"+minusMoney+"\t\t"+minusInfo+"\n");
					}
					else
					{
    
    
						System.out.println("支出超出账户额度,支付失败!");
					}
					System.out.println("------------------登记完成--------------------\n");
					break;
				case '4':
					//System.out.println("4.退    出");
					System.out.print("是否确认退出(Y/N):");
					char isExit=Utility.readConfirmSelection();
					if(isExit=='Y')
					{
    
    
						isFlag=false;
					}
					//break;
			}
		}
	}
}

说一下要注意的几个地方:

  • 环境变量一定要正确配置
  • 一定要正确地安装JDK和JRE
  • 安装的JDK版本(32位或64位)必须于eclipse保持一致
  • 还有Utility工具类里的readKeyBoard()方法不能漏
    以上详细教程均出自于尚硅谷Java教学视频

猜你喜欢

转载自blog.csdn.net/weixin_44337241/article/details/119063836