在day04_javase的视频中,感觉这个老师讲的是超级详细,容易懂得怎么样做,简直是手把手写注释
先一个程序:
1先分析你这个程序流程
2.在写代码钱用注释写出每一个步骤执行什么(大体的框架)
3.安装注释在下面一行一行写代码,清晰明了无比
(由于那个需求分析的ppt插入不进来,所以一般人还是不太看得懂我说的)
1.先分析这个程序的流程,
2.用文字注释写在编写的代码行,
3.根据注释写出代码
1 package day04_javase;
2 /**
3 * 简单的家庭收支统计系统
4 *
5 */
6 public class FamilyAccount {
7
8 public static void main(String[] args) {
9 //声明余额变量的初始值是10000
10 int balance=10000;
11 //声明记账本,初始值是表头
12 String detail="收支\t 账户金额\t 收支金额\t 说 明\n";
13 //声明布尔值,用来做循环条件
14 Boolean loopFlag=true;
15 //1在循环中,打印主菜单
16 while(loopFlag){
17 System.out.println("\n*******************家庭收支记账软件******************\n");
18 System.out.println("");
19 System.out.println(" 1.收支明细");
20 System.out.println(" 2.登记收入");
21 System.out.println(" 3.等级支出");
22 System.out.println(" 4.退出\n");
23 System.out.println("");
24 System.out.print("请输入您的选择(1-4):");
25 //2获取用户的键盘输入utility.readMenuSelection();
26 char userInput=Utility.readMenuSelection();
27 //3获取用户输入的分支
28 switch(userInput){
29 //用户输入1时,,打印记账本;
30 case '1':
31 System.out.println("****************当前收支记录****************");
32 System.out.println(detail);
33 System.out.println("*******************************************");
34 break;
35 //用户输入2时,登记收入
36 case'2':
37 System.out.print("请输入您收入的金额:");
38 //用户输入金额用int money保存
39 int money=Utility.readNumber();
40 System.out.print("请输入收入的来源:");
41 String Info=Utility.readString();
42 //余额的增加,本来的加上收入的等于最新的余额
43 balance+=money;
44 //声明一个字符串,把当前的的操作细节拼接成一个字符串
45 String string="收入"+"\t"+balance+"\t"+money+"\t"+Info+"\n";
46 //把这个string字符串拼接到detail上面去
47 detail+=string;
48 System.out.println("************************本次录入完成***************");
49 break;
50 //用户输入3时,登记支出
51 case'3':
52 System.out.print("请输入您支出的金额:");
53 //用户输入金额用int money保存
54 int money1=Utility.readNumber();
55 System.out.print("请输入支出的用途:");
56 String Info1=Utility.readString();
57 //余额的增加,本来的加上收入的等于最新的余额
58 balance-=money1;
59 //声明一个字符串,把当前的的操作细节拼接成一个字符串
60 String string1="支出"+"\t"+balance+"\t"+money1+"\t"+Info1+"\n";
61 //把这个string字符串拼接到detail上面去
62 detail+=string1;
63 System.out.println("************************本次录入完成***************");
64 break;
65
66 //用户输入4时,设置布尔值变量为假,退出程序
67 case'4':
68 System.out.print("是否要退出?请选择(Y/N)");
69 char confirm=Utility.readConfirmSelection();
70 if(confirm=='y'){
71 loopFlag=false;
72 }
73 break;
74 }
75
76 }
77 }
78
79 }
1 package day04_javase;
2 import java.util.*;
3
4 public class Utility {
5 private static Scanner scanner = new Scanner(System.in);
6
7 public static char readMenuSelection() {
8 char c;
9 for (; ; ) {
10 String str = readKeyBoard(1);
11 c = str.charAt(0);
12 if (c != '1' && c != '2' && c != '3' && c != '4') {
13 System.out.print("选择错误,请重新输入:");
14 } else break;
15 }
16 return c;
17 }
18
19 public static int readNumber() {
20 int n;
21 for (; ; ) {
22 String str = readKeyBoard(4);
23 try {
24 n = Integer.parseInt(str);
25 break;
26 } catch (NumberFormatException e) {
27 System.out.print("数字输入错误,请重新输入:");
28 }
29 }
30 return n;
31 }
32
33 public static String readString() {
34 String str = readKeyBoard(8);
35 return str;
36 }
37
38 public static char readConfirmSelection() {
39 char c;
40 for (; ; ) {
41 String str = readKeyBoard(1).toUpperCase();
42 c = str.charAt(0);
43 if (c == 'Y' || c == 'N') {
44 break;
45 } else {
46 System.out.print("选择错误,请重新输入:");
47 }
48 }
49 return c;
50 }
51
52 private static String readKeyBoard(int limit) {
53 String line = "";
54
55 while (scanner.hasNext()) {
56 line = scanner.nextLine();
57 if (line.length() < 1 || line.length() > limit) {
58 System.out.print("输入长度(不能大于" + limit + ")错误,请重新输入:");
59 continue;
60 }
61 break;
62 }
63
64 return line;
65 }
66 }
Utility