本篇是一个java初学者写的家庭收支账本,希望对大家有用。
明确要求:
1.在这里在第一个界面它需要四个选择功能。
收支明细
登记收入
登记支出
退 出
2.每次的支出或收入都要记录,以便后续能查找。
所以在这里我们首先要思考怎么才能将这些都能在控制台输出。
我们能想到以前学过的的数组,数组可以赋值。
所以第一步我们首先定义一个数组:

public static void main(String[] args) {
            String[][] arr = new String[10][4];
            //在这里定义一个二维引用数据类型数组

其次,需要接受用户的选择,我们用Scanner来输入数据。

Scanner sc = new Scanner(System.in);
            //在这里接受用户数据

在其次我们定义本金

int ben = 10000;  //本金为10000
            int count = 0;

在这里我们需要编写这个账本的最顶部的文本,并进行一个死循环。为了应对错误数据(只是int类型)编写一个if判断。

while (true) {
            System.out.println("--------家庭收支记账软件-------- \n 1 收支明细\n 2 登记收入\n 3 登记支出\n 4 退出\n请选择1~4:");
            //用户选择
            int a = sc.nextInt();
            if(a !=1 && a !=2 && a != 3 && a != 4){
                System.out.println("输入的选项错误,请重新输入:");
                int b= sc.nextInt();
                //替换
                a=b;
                //在这里是为了防止有错误数据,只要输入的不是1~4,就会报错,重新输入,新输入的值会代替a.
            }

在这里当用户选择第一个选项的时候,就会输出这个收支明细表。因为String类型空值时会输出null,多以只有有数据是才会进行输出。

switch (a) {
                case 1:
                    System.out.println("---------------收支明细记录表-------------------");
                    System.out.println("收支\t\t账户总金额\t\t收支金额\t\t说   明");
                    for (int j = 0; j < arr.length; j++) {
                        if (arr[j][0] != null) {
                            System.out.println(arr[j][0] + "\t\t " + arr[j][1] + "\t\t\t " + arr[j][2] + "\t\t " + arr[j][3]);
                        }
                    }
                    System.out.println("-----------------------------------------------\n");
                    break;

当用户选择第二个选项时,接受收入说明,收入金额,将收入的金额和本金相加,在这里赋值给总金额。因为定义的收入金额和本金为int类型所以这里强转。

case 2:
                    System.out.println("请输入本次收入的说明:");
                    String shou = sc.next();
                    System.out.println("请输入本次收入的金额:");
                    int num = sc.nextInt();
                    arr[count][0] = "收入";
                    ben += num;
                    arr[count][1] = String.valueOf(ben);
                    arr[count][2] = String.valueOf(num);
                    arr[count][3] = shou;
                    count++;
                    System.out.println("添加成功!");
                    break;

在这里和第二个选项相同,就是在总金额中减去支出金额。

case 3:
                    System.out.println("请输入本次支出的说明:");
                    String zhi = sc.next();
                    System.out.println("请输入本次支出的金额:");
                    int nu = sc.nextInt();
                    arr[count][0] = "支出";
                    ben -= nu;
                    arr[count][1] = String.valueOf(ben);
                    arr[count][2] = String.valueOf(nu);
                    arr[count][3] = zhi;
                    count++;
                    System.out.println("添加成功!");
                    break;

最后在这里就是编写退出程序了,return是结束当前所有程序,而break是跳出当前循环。

case 4:
                    System.out.println("是否退出?退出填1否则2");
                    int tui = sc.nextInt();
                    if(tui == 1) {
                        System.out.println("退出成功!");
                        return;
                    }else{
                        break;
                    }