根据要求理清个人的代码逻辑
前言
对于一些刚刚开始学习的小白,当遇到一些项目要求时会觉得迷糊,找不到从何处下手更为合适或者下手后写的一团糟。实际上,这本质是因为项目练习不足,使得自己不能 “看得懂” 要求。不必着急,本篇文章会简单的举出几个小的示例项目,帮助你学习如何 “看懂” 要求。
方法
- 首先有一点值得注意,如果要完成某一个功能,不要着急动手,正如前言所说的那样,项目着手前要做的是先要看懂,看懂之后动手,思路才能更清晰,这在写代码中是极为重要的。 切忌“感觉”看懂了,之后就急慌慌的开始写。 所谓 “磨刀不误砍柴工”,就是这个道理。
- 对于项目的要求分析重点在于 掌控大局,逐个击破,具体来说,就是 在接触到要求的时候先一整个的看下来,在看完之后再从头循序渐进地“推”自己,把题目的要求分开来看。如果遇到自己之前没接触的要求,随后直接动手写代码就往往会让自己的代码特别的乱。因为你总会在动手之后频繁发现一些地方会少掉或者多出一些东西,而你在这个添加和删除的过程中,思路也会跟着慢慢混乱起来,有时还会导致你心情也跟着变糟,慢慢就会让你的代码也一团糟,从而形成一个恶性循环。这必然是不可取的。
小项目演示分析及实操
-
1. 这里是一个小的案例示范
通过输入身份证号判断出生年月日及性别;
如果男/18周岁;可以上网;
如果女/20周岁;可以上网;
注:17位 奇数 男 偶数是女- 根据题目要求我们可以分为 “输入”, “判断” 和 “男/18,女/20” 三个要求。
- 根据 “输入” ,需要得到用户输入的数据并加以使用,所以可以 创建一个键盘录入对象以及String类型的变量 用于接收用户输入的身份证号。
import import java.util.Scanner; ... Scanner sc = new Scanner(System.in); String id = sc.next();
- 之后再根据 “判断” ,需要用到判断是否满足某一条件,因此可以 使用if条件判断语句 进行两次判断。
if(...){ ...; }else if(...){ ...; }else{ ...; }
- 而通过最后的 “男/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上限)
- 根据题目,我们可以获取到 “注册”,“登录”,“存款、取款、查看余额”(银行存储系统) 。其中 “登录”,“银行存储系统” 又可以分为 “输入” 和 “校验” ,所以可以先声明一个键盘录入对象便于使用。又由于登录验证可能会出现错误,所以要给验证的地方加上一个循环结构。考虑到使用银行系统可能多次使用,所以我们要添加上循环结构以及 “退出” 功能;因为以上功能较多,需要用户进行选择所以还要使用到条件判断语句也就是 “主页面” 或者说“系统页面”。
import import java.util.Scanner;
...
Scanner sc = new Scanner(System.in);
//主页面的循环结构
boolean flag = true;
while(flag){
...;
}
- “主页面”:输出一个功能列表,让用户选择需要运行的功能。
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;
}
- “注册”: 注册时首先需要声明两个变量 “用户名” 和 “密码”,之后利用键盘录入对象的方法,给两个变量分别赋值。由于其他代码中都需要使用这两个变量,所以最好先在外部声明之后再在内部赋值最好。
//用户名
String name;
//密码
int pwd;
//余额
double money;
...;
System.out.println("请输入您的姓名");
name = sc.next();
System.out.println("请设置您的密码");
pwd = sc.nextInt();
System.out.println("注册成功");
- “登录”:登录需要用户输入用户名和密码,并分别对其进行检验,不符合则重新输入,并且通过后进入银行存储系统页面,同时在其外部添加一个循环结构。
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;
}
}
- “银行存储系统”:在该功能实现前首先需要一个用户的余额变量提前声明出来。存取款同样需要进行录入和简单的验证。存款页面要求存款不能超过单词限额,取款页面要求不能超过余额的同时,单日取款总额也不能超过限额,所以需要额外声明一个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;
}
- “退出”:该功能只需要将循环关闭即可,也就是把while中的循环条件改为false。
flag = false;
break;
至此,项目已经全部完成。
附:
对于小白来说,能 培养出属于自己的逻辑思维 很重要。最好在一开始的时候,就能够慢慢的去开始培养,这必然能让你在之后的学习事半功倍。当然之后再训练自己的逻辑也并非不可,但也确实会走一点弯路。最后,本篇文章仅提供思路,想要看懂项目要求,最重要的还是需要我们自己去多加练习;希望这篇文章能对初入java学习的你能够有所帮助。
——weakest