导语
? ? ? ?作为一名非科班出身的无基础java初学者。我会在这里记录我的学习过程及心得分享,希望会对你们想要入行的小伙伴有所帮助,多一个参考的点。
? ? ? ?其次希望我的分享能对同样是初学者的你能有所帮助。
? ? ? ?同时我也想以此激励自己学习,如果有志同道合的小伙伴就最好啦。大家一起进步!
? ? ? ? 最后,若您有自己的想法或者觉得我的讲述有问题,需要补充或改正的,欢迎在下方留言互相讨论!!
小项目训练:家庭记录收支
以下为运行的部分截图
?下图为工具类
import java.util.Scanner;
/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
public class Utility {
private static Scanner scanner = new Scanner(System.in);
/**
用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1);
c = str.charAt(0);
if (c != '1' && c != '2' && c != '3' && c != '4') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
/**
用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。
*/
public static int readNumber() {
int n;
for (; ; ) {
String str = readKeyBoard(4);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。
*/
public static String readString() {
String str = readKeyBoard(8);
return str;
}
/**
用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
*/
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
}
private static String readKeyBoard(int limit) {
String line = "";
while (scanner.hasNext()) {
line = scanner.nextLine();
if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
下图为代码实现
public class FamilyCounts {
public static void main(String[] args) {
int sum = 10000;
int count = 0;
String arr[][] = new String[10][4];
boolean b = true;
while (b) {
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();
System.out.println(" 请选择1-4");
char a = Utility.readMenuSelection();
switch (a) {
case '1':
read1(arr);
break;
case '2':
int i = read2(arr, count, sum);
sum=i;
count++;
break;
case '3':
int i1 = read3(arr, count, sum);
sum=i1;
count++;
break;
case '4':
boolean b1 = read4(b);
b=b1;
break;
}
}
}
public static void read1(String [][]arr){
System.out.println("收支 账户总金额 收支金额 说明");
System.out.println("------------------------------------------------------");
if (arr[0][0] == null) {
System.out.println("暂无记录");
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][0] != null) {
System.out.print(arr[i][j] + " ");
}
}
System.out.println();
}
}
public static int read2(String [][]arr,int count,int sum){
System.out.println("请输入收入");
int money = Utility.readNumber();
System.out.println("请输入说明");
String shuoMing = Utility.readString();
sum += money;
arr[count][0] = "收入";
arr[count][1] = sum + "";
arr[count][2] = money + "";
arr[count][3] = shuoMing;
//count++;
System.out.println("添加成功");
return sum;
}
public static int read3(String [][]arr,int count,int sum){
System.out.println("请输入支出(支出为负数)");
boolean d=true;
while (d) {
int money1 = Utility.readNumber();
if (money1 >= 0) {
System.out.println("输入有误");
}
else {
System.out.println("请输入说明");
String shuoMing1 = Utility.readString();
sum += money1;
arr[count][0] = "支出";
arr[count][1] = sum + "";
arr[count][2] = money1 + "";
arr[count][3] = shuoMing1;
//count++;
System.out.println("添加成功");
d=false;
}
}
return sum;
}
public static boolean read4(boolean b){
System.out.println("确定退出:Y 取消:N");
char c = Utility.readConfirmSelection();
if (c == 'Y') {
System.out.println("退出成功");
b = false;
}
return b;
}
}
???????????
? ? ? ? 我在了解到该项目的需求后,是一点思路都没有的。虽然明知该项目所用的知识点的范围(我前面两篇的标题范围)但还是无从下手,反复观看源码后才明白如何运用所有的知识。
? ? ? ? 这里我想说我的两点感悟:
? ? ? ? 1.知识的学习到知识的实践运用不是一蹴而就的,整个实践过程是非常需要学习的,要充实自己的实践思维,不单单是理论思维的摸索。
? ? ? ? 2.迎难而上对自己有信心。我在刚看到这个作业的时候,心里是有些烦躁的。自认为前面的理论都学的还可以,但是在碰到第一个小项目型的作业的时候,却啥也不会。然后就没耐心去观看源码,隔了一天后才逼自己去看源码怎么写的,琢磨了小一个小时才琢磨明白。便有种豁然开朗的感觉。回过头来自己写的时候发现这个题其实一点都不难,很基础,也很开心。感觉又充满了动力。
总结:
? ? ? ? ? ?困难只是暂时的,就像爬山,当你最后气喘吁吁爬到山顶的时候,看到美好的景色,你会感谢之前的坚持。但也要清醒,后面还有无数座山峰再着你,同样的,也有无数份的喜悦与骄傲。
我们一起加油!? ? ?
|