根据要求理清代码逻辑

前言

对于一些刚刚开始学习的小白,当遇到一些项目要求时会觉得迷糊,找不到从何处下手更为合适或者下手后写的一团糟。实际上,这本质是因为项目练习不足,使得自己不能 “看得懂” 要求。不必着急,本篇文章会简单的举出几个小的示例项目,帮助你学习如何 “看懂” 要求。

方法

  1. 首先有一点值得注意,如果要完成某一个功能,不要着急动手,正如前言所说的那样,项目着手前要做的是先要看懂,看懂之后动手,思路才能更清晰,这在写代码中是极为重要的。 切忌“感觉”看懂了,之后就急慌慌的开始写。 所谓 “磨刀不误砍柴工”,就是这个道理。
  2. 对于项目的要求分析重点在于 掌控大局,逐个击破,具体来说,就是 在接触到要求的时候先一整个的看下来,在看完之后再从头循序渐进地“推”自己,把题目的要求分开来看。如果遇到自己之前没接触的要求,随后直接动手写代码就往往会让自己的代码特别的乱。因为你总会在动手之后频繁发现一些地方会少掉或者多出一些东西,而你在这个添加和删除的过程中,思路也会跟着慢慢混乱起来,有时还会导致你心情也跟着变糟,慢慢就会让你的代码也一团糟,从而形成一个恶性循环。这必然是不可取的。

小项目演示分析及实操

  • 1. 这里是一个小的案例示范

    通过输入身份证号判断出生年月日及性别;
    如果男/18周岁;可以上网;
    如果女/20周岁;可以上网;
    注:17位 奇数 男 偶数是女

    1. 根据题目要求我们可以分为 “输入”“判断”“男/18,女/20” 三个要求。
    2. 根据 “输入” ,需要得到用户输入的数据并加以使用,所以可以 创建一个键盘录入对象以及String类型的变量 用于接收用户输入的身份证号。
      import import java.util.Scanner;
      ...
      Scanner sc = new Scanner(System.in);
      String id = sc.next();
      
    3. 之后再根据 “判断” ,需要用到判断是否满足某一条件,因此可以 使用if条件判断语句 进行两次判断。
      if(...){
      	...;
      }else if(...){
      	...;
      }else{
      	...;
      }
      
    4. 而通过最后的 “男/18,女/20”,可以得知需要同时判断到两个条件,因而需要用到 &符号 添加需要同时判断的条件。并且根据提示,我们还要用到 字符串类型转化和获取子字符串的方法 截取到第十七位数字和第七位到第十位判断男女和现在的年龄。
      //判断男/18
      Integer.parseInt(id.substring(6,10)) <= 2005
      	&& Integer.parseInt(id.substring(16))%2==1
      //判断女/20
      nteger.parseInt((id.substring(6,10))) <= 2003
         && Integer.parseInt((id.substring(16)))%2==0
      
  • 2.胃口大一点的可以直接看这里

银行系统,实现
单个用户的注册,登录以及存取款功能
存款(20000 单次上限 单日无上限)
取款(单次5000上限 每日20000上限)

  1. 根据题目,我们可以获取到 “注册”“登录”“存款、取款、查看余额”(银行存储系统) 。其中 “登录”“银行存储系统” 又可以分为 “输入”“校验” ,所以可以先声明一个键盘录入对象便于使用。又由于登录验证可能会出现错误,所以要给验证的地方加上一个循环结构。考虑到使用银行系统可能多次使用,所以我们要添加上循环结构以及 “退出” 功能;因为以上功能较多,需要用户进行选择所以还要使用到条件判断语句也就是 “主页面” 或者说“系统页面”。
import import java.util.Scanner;
...
Scanner sc = new Scanner(System.in);
//主页面的循环结构
boolean flag = true;
while(flag){
	...;
}
  1. “主页面”:输出一个功能列表,让用户选择需要运行的功能。
	System.out.println("欢迎您使用本银行系统"
		"\n请根据您的需要输入对应数字");
	System.out.println("1.注册\n2.登录\n3.退出");
	int choose = sc.nextInt();
	switch(choose){
		//存款功能
	    case 1:
		    ...;
		    break;
		//取款功能
	    case 2:
	   		...;
		    break;
		//退出
		case 3:
			...;
			break;
		default:
			System.out.println("输入有误,请重新输入");
			break;
	}
  1. “注册”: 注册时首先需要声明两个变量 “用户名”“密码”,之后利用键盘录入对象的方法,给两个变量分别赋值。由于其他代码中都需要使用这两个变量,所以最好先在外部声明之后再在内部赋值最好。
			//用户名
			String name;
			//密码
			int pwd;
			//余额
			double money;
			...;
			System.out.println("请输入您的姓名");
	        name = sc.next();
	        System.out.println("请设置您的密码");
	        pwd = sc.nextInt();
	        System.out.println("注册成功");
  1. “登录”:登录需要用户输入用户名和密码,并分别对其进行检验,不符合则重新输入,并且通过后进入银行存储系统页面,同时在其外部添加一个循环结构。
boolean flag_1 = true;
        while (flag_1) {
            System.out.println("请输入您要登录的账户姓名"
            	+ "\n(如果没有账户请先前往注册)");
            String in_name = sc.next();
            if(!(in_name.equals(name))){
            	System.out.println("用户名不存在");
            	break;
            }
            System.out.println("请输入您的密码");
            int in_pwd = sc.nextInt();
            if(in_pwd == pwd){
            	//验证完成后进入银行系统存储页面
            	boolean flag_2 = true;
            	while(flag_2){
            		...;
            	}
            }else{
				System.out.println("密码不匹配");
				break;
			}
		}
  1. “银行存储系统”:在该功能实现前首先需要一个用户的余额变量提前声明出来。存取款同样需要进行录入和简单的验证。存款页面要求存款不能超过单词限额,取款页面要求不能超过余额的同时,单日取款总额也不能超过限额,所以需要额外声明一个double值作为单日限额。查看余额直接输出即可。与主系统一致,该区域代码会多次执行,同样需要一个退出功能,该功能需要将两个循环一并关闭。(为了方便查看,变量的声明最好都声明在一起)
		double money = 0;
	    double day_out = 0;
	    ...;
        System.out.println("欢迎您,尊敬的用户" + name + 
        	"\n请根据您的需要输入对应数字");
        System.out.println("1.存款\n2.取款\n3.查看余额\n4.退出");
        int choose = sc.nextInt();
        switch(choose){
        	//存款功能
            case 1:
                int input = sc.nextInt();
                if(input <= 20000){
                    money += input;
                    System.out.println("存入成功");
                }else{
                    System.out.println("无法存入,不符合金额规定");
                }
            break;
            //取款功能
            case 2:
                if (money >= 100) {
                    int output = sc.nextInt();
                    if(output >= 100 && output <= 5000 &&
                     day_out + output <= 20000 &&
                      money - output >= 0){
                        money-=output;
                        day_out+=output;
                        System.out.println("取款成功");
                    }else{
                        System.out.println("无法取出,不符合金额规定");
                    }
                }else{
                    System.out.println("金额过少无法取款");
                }
            break;
            //查看余额
            case 3:
                System.out.println("卡内余额为:" + money);
                break;
            //退出
            case 4:
            	flag_1 =false;
                flag_2 = false;
                System.out.println("已退出");
                break;
        }
  1. “退出”:该功能只需要将循环关闭即可,也就是把while中的循环条件改为false。
	flag = false;
	break;

至此,项目已经全部完成。

附:

对于小白来说,能 培养出属于自己的逻辑思维 很重要。最好在一开始的时候,就能够慢慢的去开始培养,这必然能让你在之后的学习事半功倍。当然之后再训练自己的逻辑也并非不可,但也确实会走一点弯路。最后,本篇文章仅提供思路,想要看懂项目要求,最重要的还是需要我们自己去多加练习;希望这篇文章能对初入java学习的你能够有所帮助。
——weakest

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值