需求:
使用二维数组记录,如图:
界面要求:
登记收入:
登记支出:
代码实现:
设定初始值:
int x = 1;//后面需要通过x来找数组中的索引
String[][] arr = new String[10][4];
Scanner sc = new Scanner(System.in);
//基础数据
arr[0][0] = "收支";
arr[0][1] = "账户总金额";
arr[0][2] = "收支金额";
arr[0][3] = "说明";
arr[1][0] = "收入";
arr[1][1] = "10500";
arr[1][2] = "+500";
arr[1][3] = "板砖";
为了能让界面一直显示,用死循环while(true){}来实现,同时要把判断语句加入死循环中
while (true) {
System.out.println("-------------家庭收支记账软件-----------");//开局表达
System.out.println("1 收支明细");
System.out.println("2 登记收入");
System.out.println("3 登记支出");
System.out.println("4 退 出");
System.out.println();
System.out.println("请选择(1-4):");
String sr = sc.next();//输入
然后用switch进行判断输入的数来选择进行操作:(switch(sr){})
输入1时:
case "1"://收支明细
for (int q = 0; q < arr.length; q++) {
for (int c = 0; c < arr[q].length; c++) {
if (arr[q][c] != null) {//如果数组内的值为空则不打印
if (q != 0) {
System.out.print(" " + arr[q][c] + "\t\t");
} else {
System.out.print(arr[q][c] + "\t\t");
}
}
if (c == 3 & arr[q][c] != null) {
System.out.println();
}
}
}
break;
输入2时:
case "2"://收入登记
System.out.println("请输入一个数");
Scanner scanner = new Scanner(System.in);//创建新的对象,用来存后面的输入的数据
if(scanner.hasNextInt()){//这里的scanner.hasNextInt()则是判断上面创建的对象输入的是否为int类型
int t = scanner.nextInt();//收支金额
int integer = Integer.parseInt(arr[x][1]);//让String强转为int,用到Integer.valueOf,Integer包装类
x++;
arr[x][0] = "收入";
integer = integer + t;//用强转为int类型的上一位的数值进行运算
arr[x][1] = integer + ""; //拼接,也就让int类型强转成String
arr[x][2] = "+" + t;//这样表示的能把int类型存入Spring
System.out.println("请说明理由");
String r = sc.next();//说明
arr[x][3] = r;
System.out.println("添加成功");
}else{//如果不是则打印下面
System.out.println("无法识别");
}
break;
注意:这里用到了包装类Integer.valueOf(需要强制转换的数据),同时用int类型来记录数据
输入3时:
case "3"://收入登记
System.out.println("请输入一个数");
Scanner scanner1 = new Scanner(System.in);//创建新的对象,用来存后面的输入的数据
if (scanner1.hasNextInt()) {//这里的scanner.hasNextInt()则是判断上面创建的对象输入的是否为int类型
int y = scanner1.nextInt();//收支金额
int integer1 = Integer.parseInt(arr[x][1]);//让String强转为int,用到Integer.valueOf,Integer包装类
x++;
arr[x][0] = "支出";
integer1 = integer1 - y;//用强转为int类型的上一位的数值进行运算
arr[x][1] = integer1 + ""; //拼接,也就让int类型强转成String
arr[x][2] = "-" + y;//这样表示的能把int类型存入Spring
System.out.println("请说明理由");
String u = sc.next();//说明
arr[x][3] = u;
System.out.println("添加成功");
} else {
System.out.println("无法识别");
}
break;
输入4时:
case "4":
System.out.println("是否确定");
String p = sc.next();
if (p.equals("否")) {//equals比较两个数是否相同
break;
} else if (p.equals("是")) {
return;
} else {
System.out.println("无法识别");
}
break;
注:用到equals比较,比较两个数是否相同,相同则执行下面的操作。
如果输入的不是(1-4)的字符串则打印下面
default://如果输入的字符串不是上面的则打印下面
System.out.println("输入有误");