家庭记录收支程序

项目场景:

该软件能够记录家庭的收入、支出,并能够打印收支明细表,记录收入和支出的金额并说明原因。
-----------------家庭收支记账软件-----------------
1 收支明细
2 登记收入
3 登记支出
4 退 出
请选择(1-4):
界面在此为基础上


问题描述:

两层循环的时候,需要用到while
还有就是比较字符串大小要用equal()函数(比较字符串内容的大小),"=="是用于int、char类型的比较;代码引用了Utility工具包
完整代码如下:

public class project1 {
    
    
    public static void shuchu(int[][] a,String[][] b,int c,String[] d){
    
    
        for (int j=0;j<d.length;j++){
    
    
            System.out.print(d[j]+"  ");
        }
        System.out.println();
        for (int i=0;i<c;i++){
    
    
            System.out.println(b[i][0]+"  "+a[i][0]+"      "+a[i][1]+"       "+b[i][1]);
        }
    }
    public static void shouru(int[][] arr1,String arr2[][],int sum,int revenue,String RevenueReason,int index){
    
    
        sum=sum+revenue;
        String a1="收入";
        arr2[index][0]=a1;
        arr1[index][0]=sum;
        arr1[index][1]=revenue;
        arr2[index][1]=RevenueReason;
    }
    public static void zhichu(int[][] arr1,String arr2[][],int sum,int pay,String PayReason,int index){
    
    
        String a2="支出";
        sum=sum-pay;
        arr2[index][0]=a2;
        arr1[index][0]=sum;
        arr1[index][1]=-pay;
        arr2[index][1]=PayReason;
    }
    public static void main(String[] args) {
    
    
        int index=0;
        int[][] arr1=new int[100][2];
        String[][] arr2=new String[100][2];
        int sum=10000;
        String[] er= new String[]{
    
    "收支", "账户总金额","收支总金额","说明"};//说明statet,explain;
        boolean flag =true;
        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 a=Utility.readMenuSelection();
            switch (a){
    
    
                case '1':
                    System.out.println("-------------------收支账单明细记录表-----------------------");
                    shuchu(arr1,arr2,index,er);
                    break;
                case '2':
                    System.out.println("-------------------收入明细记录表-----------------------");
                    System.out.println("请输入要收入的金额:");//收入incom,earning1,revenue;
                    int revenue=Utility.readNumber();
                    System.out.println("请输入收入的原因:");
                    String RevenueReason=Utility.readString();
                    shouru(arr1,arr2,sum,revenue,RevenueReason,index);
                    index=index+1;
                    break;
                case '3':
                    System.out.println("-------------------支出明细记录表-----------------------");
                    System.out.println("请输入要支出的金额:");
                    int pay=Utility.readNumber();
                    System.out.println("请输入支出的原因:");
                    String PayReason=Utility.readString();
                    zhichu(arr1,arr2,sum,pay,PayReason,index);
                    index=index+1;
                    break;
                case '4':
                    System.out.println("确认是否退出(Y/N)?:");
                    char z=Utility.readConfirmSelection();
                    if (z=='Y'){
    
    
                        flag=false;
                    }else {
    
    
                        flag=true;
                    }
            }
        }
    }
}

这里面是将swich整个语句放到while语句中,我们需要循环swich语句中的内容,这种方法比较常用;Scanner的方法有nextInt()这是接受int类型的数字,next()这是接收字符串的。


原因分析:

没有比较灵活的运用boolean类型,将他运用到循环中,可以在我们想要结束循环时,就可以结束。


解决方案:

用while()来管理外层循环,switch管理内存循环。并用布尔类型来结束和继续循环。

おすすめ

転載: blog.csdn.net/m0_51064043/article/details/120163293