在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 }