IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 家庭记录收支程序 -> 正文阅读

[Java知识库]家庭记录收支程序

导语

? ? ? ?作为一名非科班出身的无基础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.迎难而上对自己有信心。我在刚看到这个作业的时候,心里是有些烦躁的。自认为前面的理论都学的还可以,但是在碰到第一个小项目型的作业的时候,却啥也不会。然后就没耐心去观看源码,隔了一天后才逼自己去看源码怎么写的,琢磨了小一个小时才琢磨明白。便有种豁然开朗的感觉。回过头来自己写的时候发现这个题其实一点都不难,很基础,也很开心。感觉又充满了动力。

总结:

? ? ? ? ? ?困难只是暂时的,就像爬山,当你最后气喘吁吁爬到山顶的时候,看到美好的景色,你会感谢之前的坚持。但也要清醒,后面还有无数座山峰再着你,同样的,也有无数份的喜悦与骄傲。

我们一起加油!? ? ?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:15:56  更:2021-08-17 15:16:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:27:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码