项目场景:
该软件能够记录家庭的收入、支出,并能够打印收支明细表,记录收入和支出的金额并说明原因。
-----------------家庭收支记账软件-----------------
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管理内存循环。并用布尔类型来结束和继续循环。