相信刚刚入门的一两个月的小伙伴,学习java基础都快学习完了,然后感觉做不出什么东西,别急,这里先带你看一个简单的小项目,由于较为基础,推荐刚刚入门java不久的小伙伴哈,如果你是大佬,那么我觉得没什么帮助,哈哈哈,不过欢迎各位大佬指出我的错误(文章后面附上了完整的代码)
废话不多说,进入正题。
首先呢,当然是用户进入的时候,我们必须得拍巴掌欢迎呀,然后就需要列出各个功能,这里选用数字来匹配不同的功能,不急,来看代码
import java.net.IDN; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class User { public static void main(String[] args) { //进入界面 System.out.println("欢迎进入通讯录"); System.out.println("请输入数字:1:查询;2:添加;3:删除;4:修改,5:退出");
很简单把。
我们继续,接下来,我们就得想,我们做的是通讯录,我们要选择什么来保存我们通讯录的人的信息呢,诶,我们不就是学过的存储的不就是数组,和集合吗,有了有了,这里我们选择用集合ArrayList这个容器来装下我们的通讯录的信息,因为我可以用一个Person类来创建不同的对象,然后把不同的对象装进我们的小黑屋里不就可以来吗,好像是这个道理哦(要单独创一个person对象,由于我后面要用,我先把person类代码也一起写出来)
//用数字a代表不同功能,用ArrayList集合将各个用户搜集 Scanner sc = new Scanner(System.in); int a = sc.nextInt(); List list = new ArrayList();
class Person { private String name; private String age; private String address; private int id; public Person(String name, String age, String address, int id) { this.name = name; this.age = age; this.address = address; this.id = id; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", address='" + address + '\'' + ", id=" + id + '}'; } //修改 public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setAddress(String address) { this.address = address; } public void setId(int id) { this.id = id; } }
好了,到了我们的关键部分了**,
。**首先我们考虑的是我们刚刚第一步是进入这个通讯录程序,那么我们每次执行一次就结束吗,这样显然不是我们期待的,我们希望可以完成多个功能然后自己选择要不要退出,显然啦,我就想到来死循环,while(true),只要我不用break,那么我就一直不会退出,然后我们的退出也可以想成一种功能,那样我们就可以自己选择来了
//while循环设置为进入了这个功能,同时用a代表不同功能,用switch匹配,1代表查询,2代表添加,3,代表删除,4代表修改,5代表退出 while (true) {
到了我们功能实现的时候了,刚刚我说的是用不同数字匹配我们的不同功能是不是一直没有解释,那我们就来解释一下,因为用户要在不同的功能切换选择呀,选择这个东西,我们就想到条件循环啦,那么我用数字代表不同的功能,那好像会更加方便啊,于是,switch这个东西就突然在的小脑子里闪过。是不是突然发现自己很聪明(偷笑),那么我们就先完成最简单的一个功能吧
我们的通讯录,这个简单,直接打印我们的l创建的容器对象,这个是简单,但是我们想想执行完这个功能后,怎么去切换功能。我们想想一吧case都会带break吧,这个大家应该知道,执行完break后,我们就执行完了switch,外面就是我们的while(true)然后又会循环过来执行switch,这个时候因为我们进入的时候就选择了我们的功能,然后我们没有去做改变的话,就一直循环那个功能,那还玩个锤子啊,然后我们是不是就想到了改变那个数字就ok了呗,那你也太聪明了,我们就改变那个控制功能的数字不就完成了功能切换吗。来看看代码更加清除
switch (a) { //查询 case 1: System.out.println(list); //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break;
,如果查询没有添加,这个程序岂不是费了,不然我们的查询一直都是空白的,而我们的思路是new 一个person,把它放在集合里就ok,这个简单,不过最后面我们也要加上那个功能切换的键哦
//添加 case 2: { System.out.println("请输入添加人的名字"); String name = sc.next(); System.out.println("请输入添加人的通讯地址"); String address = sc.next(); System.out.println("请输入添加人的年龄"); String age = sc.next(); System.out.println("请输入添加人的ID(输入数字)"); try{ int id=sc.nextInt(); list.add(new Person(name, age, address,id)); System.out.println("添加成功");} catch(Exception e){ System.out.println("ID输入格式错误,请重新选择2号添加键添加"); }finally{ //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break;} }
用list的remove方法就可以啦,
大家可以看一下代码里面标注了i为什么要减1的原因,这里应该是要注意的一个小点哦
case 3: { System.out.println(list); System.out.println("请输入要删除的对象在此集合里对应的序号"); //计算机是从0开始计数的,而人们习惯从1开始计数,需要转换一下 int i = sc.nextInt()-1; if (i<list.size()&&i>=0) {list.remove(list.get(i)); System.out.println("删除成功");} else System.out.println("删除失败:可能原因:您删除的用户不在通讯列表,请重新选择3号功能重新删除"); } //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break;
,这里我们要想想我们集合的对象其实都是Person对象,那么我们修改肯定是要通过我们的Person的方法进行修改,为了让小伙伴们更加清晰,我直接把对象的对象从集合里拿出来,然后,我们通过person的方法修改里面的内容,然后在用集合的方法set替换我们修改的新对象,那么修改就完成啦
看看代码更清晰,嘿嘿
case 4: { System.out.println(list); System.out.println("请输入要修改对象的序号"); int i = sc.nextInt()-1; Person p = (Person) list.get(i); System.out.println("请你输入需要修改的选项:1:姓名,2:年龄;3:通讯地址;4:ID"); int j = sc.nextInt(); if (j == 1) { System.out.println("请输入您要修改后的姓名"); String name = sc.next(); p.setName(name); } else if (j == 2) { System.out.println("请输入你要修改后的年龄"); String age = sc.next(); p.setAge(age); } else if (j == 3) { System.out.println("请输入您要修改后的通讯地址"); String address = sc.next(); p.setAddress(address); }else if(j==4){ System.out.println("请输入您要修改后的ID"); int id=sc.nextInt(); p.setId(id); } else System.out.println("您输入的数字错误,请重新选择4号修改功能键重新修改"); list.set(i, p); System.out.println("修改成功"); } //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break; }
到这里四个功能,查询,添加,删除,修改都完成了,我们的switch也结束了,这时候肯定有小伙伴急了,那退出功能呢,哈哈差点都忘记了是吧,不然我们还在那个死循环里呢,一样道理,改变功能键数字,然后在该数字下break,那么该数字执行的功能就是退出啦,我们的小项目就结束啦,当然,我们读书人讲究的是礼貌啦,别人离开就要表示一下我们悲伤的情绪啦,这个读书人的该装的b还是要装一下的,我们是读书人,文明人,嘿嘿
if(a==5) {System.out.println("成功退出,欢迎再次使用");break;} } } }
最后附上全部代码的原型
import java.net.IDN; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class User { public static void main(String[] args) { //进入界面 System.out.println("欢迎进入通讯录"); System.out.println("请输入数字:1:查询;2:添加;3:删除;4:修改,5:退出"); //用数字a代表不同功能,用ArrayList集合将各个用户搜集 Scanner sc = new Scanner(System.in); int a = sc.nextInt(); List list = new ArrayList(); //while循环设置为进入了这个功能,同时用a代表不同功能,用switch匹配,1代表查询,2代表添加,3,代表删除,4代表修改,5代表退出 while (true) { switch (a) { //查询 case 1: System.out.println(list); //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break; //添加 case 2: { System.out.println("请输入添加人的名字"); String name = sc.next(); System.out.println("请输入添加人的通讯地址"); String address = sc.next(); System.out.println("请输入添加人的年龄"); String age = sc.next(); System.out.println("请输入添加人的ID(输入数字)"); try{ int id=sc.nextInt(); list.add(new Person(name, age, address,id)); System.out.println("添加成功");} catch(Exception e){ System.out.println("ID输入格式错误,请重新选择2号添加键添加"); }finally{ //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break;} } //删除 case 3: { System.out.println(list); System.out.println("请输入要删除的对象在此集合里对应的序号"); //计算机是从0开始计数的,而人们习惯从1开始计数,需要转换一下 int i = sc.nextInt()-1; if (i<list.size()&&i>=0) {list.remove(list.get(i)); System.out.println("删除成功");} else System.out.println("删除失败:可能原因:您删除的用户不在通讯列表,请重新选择3号功能重新删除"); } //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break; //修改 case 4: { System.out.println(list); System.out.println("请输入要修改对象的序号"); int i = sc.nextInt()-1; Person p = (Person) list.get(i); System.out.println("请你输入需要修改的选项:1:姓名,2:年龄;3:通讯地址;4:ID"); int j = sc.nextInt(); if (j == 1) { System.out.println("请输入您要修改后的姓名"); String name = sc.next(); p.setName(name); } else if (j == 2) { System.out.println("请输入你要修改后的年龄"); String age = sc.next(); p.setAge(age); } else if (j == 3) { System.out.println("请输入您要修改后的通讯地址"); String address = sc.next(); p.setAddress(address); }else if(j==4){ System.out.println("请输入您要修改后的ID"); int id=sc.nextInt(); p.setId(id); } else System.out.println("您输入的数字错误,请重新选择4号修改功能键重新修改"); list.set(i, p); System.out.println("修改成功"); } //每个功能最后面都会有这行代码,用于不同功能的切换,重新赋值给a,让a根据不同的数字代表的功能去执行不同的功能区 System.out.println("请您重新选择的操作 1:查询;2:添加;3:删除;4:修改,5:退出"); a=sc.nextInt(); break; } if(a==5) {System.out.println("成功退出,欢迎再次使用");break;} } } } class Person { private String name; private String age; private String address; private int id; public Person(String name, String age, String address, int id) { this.name = name; this.age = age; this.address = address; this.id = id; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", address='" + address + '\'' + ", id=" + id + '}'; } //修改 public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setAddress(String address) { this.address = address; } public void setId(int id) { this.id = id; } }
希望能帮助刚刚入门不久的你哦,如果有一点点帮助,码字不易,记得点个赞哦,第一篇文章,还请各位多多关照呀,嘿嘿