家庭收支系统

目标:

该软件能够记录家庭的收入、支出,并能够打印收支明细表

  • 1.项目采用分级菜单方式。主菜单如下:
  • -----------------家庭收支记账软件-----------------

    1 收支明细
    2 登记收入
    3 登记支出
    4 退 出

    请选择(1-4):_

  • 假设家庭起始的生活基本金为10000元

  • 查询收支明细( 菜单1)时,
    将显示所有的收入、支出名细列表

  • 每次登记收入(菜单2)后,

收入的金额应累加到基本金上,并记录本次收入明细,
以便后续的查询。。

  • 每次登记支出(菜单3)后,

支出的金额应从基本金中扣除,并记
录本次支出明细,以便后续的查询

二维数组:

语法:数据类型 [] []数组名=new 数据类型 [大小] [大小];

比如:int a [] []=new int [2][3];

内存的存在形式:

 java中如何输入char类型

java中基本数据类型的输入包括整形的输入:in.nextInt();单精度浮点型:in.nextFloat();双精度浮点型:in.nextDouble();字符串类型:in.next();in.nextLine();但是并没有in.nextChar(); 有时候需要我们用Scanner接收char类型数据,而不是接收String

正常使用Scanner时,可以这样:

Scanner in = new Scanner(System.in);

char c = in.next().charAt(i);

把str的第i个char值赋值给c,类似于数组的查找。

charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.

charAt()方法返回指定索引位置的char值。如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.

try catch 错误处理;
执行规则:首先执行try中的代码 如果抛出异常会由catch去捕获并执行 如果没有发生异常 catch去捕获会被忽略掉 但是不管有没有异常最后都会执行。

try和catch:

 * try {
  *可能出现异常的代码
  *} catch(异常类名A e){
  *如果出现了异常类A类型的异常,那么执行该代码
  *} ...(catch可以有多个)
  * finally {
  *最终肯定必须要执行的代码(例如释放资源的代码)
  *}

格式:

  1.  try (创建流对象语句,如果多个,使用';'隔开) {
  2.     // 读写数据
  3.   } catch (IOException e) {
  4.     e.printStackTrace();
  5.  }

演示代码:

public static int getInt(){
        Scanner sc = new Scanner(System.in);
        int res;
        while (true){
            String str = sc.nextLine();
            try{
                res = Integer.parseInt(str);
                break;
            }catch (Exception e){
                System.out.println("请输入数字");
                continue;
            }
        }
        return res;
    }

//输入一个字符串;try语句中如果没有
 

 代码:

package task;
import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
         int cml=2;
        String[][] arr = new String[cml][4];
       int count=0;
        int sumNum=10000;
        Scanner sc=new Scanner(System.in);
        while (true) {
            Scanner ab = new Scanner(System.in);
            System.out.println("-------------------家庭收支记账软件---------------------\n");
            System.out.println("                    1.收支明细");
            System.out.println("                    2.登记收入");
            System.out.println("                    3.登记支出");
            System.out.println("                    4.退    出\n");
            System.out.print("请选择(1-4):");
            int num = sc.nextInt();
            switch(num){
                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\t"+arr[j][2]+"\t\t\t\t"+arr[j][3]);
                        }

                    }
                    System.out.println("--------------------------------------------------------\n");
                    break;
                case 2:
                    System.out.println("请输入本次收入的金额:");
                    int money = InputTool.getInt();
                    System.out.println("请输入本次收入的说明:");
                    String info = sc.next();
                    arr[count][0]="收入";
                    sumNum+=money;
                    arr[count][1]=sumNum+"";
                    arr[count][2]=money+"";
                    arr[count][3]=info;
                    count++;
                    System.out.println("添加成功!");


                    break;
                case 3:
                    System.out.println("请输入本次支出的金额:");
                    //int num1 = sc.nextInt();
                    int num1= InputTool.getInt();
                    System.out.println("请输入本次支出的说明:");
                    String info1 = sc.next();
                    arr[count][0]="支出";
                    sumNum-=num1;
                    arr[count][1]=sumNum+"";
                    arr[count][2]=num1+"";
                    arr[count][3]=info1;
                    count++;
                    System.out.println("添加成功!");
                    break;
                case 4:
                    System.out.println("确认是否退出(y/n)?:");
                    Scanner in=new Scanner(System.in);
                    char c1 = in.next().charAt(0);//输出char类型
                    if (c1=='y')                    {
                        System.out.println("拜拜!退出成功!");
                        return;
                    }else {
                        break;
                    }

            }//当输入的长度满了时,开始新的数组
            if(cml==count) {
                cml *= 2;
                String [][] temp = new String[cml][4];
                for (int j = 0; j <count; j++) {
                    temp[j] = arr[j];
                }
                arr = temp;
            }
        }
        }

}

工具类(Utility)

package task;

import java.util.Scanner;

public class InputTool {
    public static int getInt(){
        Scanner sc = new Scanner(System.in);
        int res;
        while (true){
            String str = sc.nextLine();
            try{
                res = Integer.parseInt(str);
                break;
            }catch (Exception e){
                System.out.println("请输入数字");
                continue;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        int a = getInt();
        System.out.println(a);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值