java基础 用arraylist做电话本

来源:互联网 发布:亚裔女神asiafox 知乎 编辑:程序博客网 时间:2024/06/04 00:59
package arrays;


import java.awt.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;


public class Phone {
private String name;
private String sex;
private int age;
private String phonenum;
private String qqnum;
private String address;
static ArrayList<Phone> phonelist = new ArrayList<Phone>(100);


public void add() {
Phone phone1 = new Phone();
Scanner sc = new Scanner(System.in);
System.out.println("输入姓名:");
phone1.name = (sc.next());
Iterator<Phone> iter = phonelist.iterator();
while (iter.hasNext()) {
Phone book = iter.next();
if (book.name.equals(phone1.name)) {
System.out.println("重复输入姓名,请重新选择!");
return;
}


}


System.out.println("输入性别:");
phone1.sex = (sc.next());
System.out.println("输入年龄:");
phone1.age = (sc.nextInt());
System.out.println("输入电话号码:");
phone1.phonenum = (sc.next());
System.out.println("输入qq号码:");
phone1.qqnum = (sc.next());
System.out.println("地址:");
phone1.address = (sc.next());
phonelist.add(phone1);
System.out.println("添加成功!");


}


public void delete() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的人名:");
String nameInDelete = sc.nextLine();
System.out.println("确定要删除吗!确定请输入y返回输入n");
String nameInDelete1 = sc.next();
if (nameInDelete1.equalsIgnoreCase("n")) {
return;
}
for (int i = 0; i < phonelist.size(); i++) {
if ((((phonelist.get(i))).name).equals(nameInDelete)) { // 强转phone类型用get接收数组下标再.出其属性
phonelist.remove(i);
}
}
System.out.println("删除成功!");
}


public void update() {
Phone phoneupdate = new Phone();
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的人名:");
String nameInUpdate = sc.nextLine();
Iterator<Phone> iter = phonelist.iterator();
while (iter.hasNext()) {
Phone book = iter.next();
if (book.name.equals(phoneupdate.name)) {
System.out.println("重复输入姓名,请重新选择!");
return;
}


}
System.out.println("确定要修改吗!确定请输入y返回输入n");
String nameInUpdate1 = sc.next();
if (nameInUpdate1.equalsIgnoreCase("n")) {
return;
}
for (int i = 0; i < phonelist.size(); i++) {
if (((phonelist.get(i))).name.equals(nameInUpdate)) {
System.out.println("输入姓名:");
phoneupdate.name = (sc.next());
System.out.println("输入性别:");
phoneupdate.sex = (sc.next());
System.out.println("输入年龄:");
phoneupdate.age = (sc.nextInt());
System.out.println("输入电话号码:");
phoneupdate.phonenum = (sc.next());
System.out.println("输入qq号码:");
phoneupdate.qqnum = (sc.next());
System.out.println("地址:");
phoneupdate.address = (sc.next());
// phonelist.add(phoneupdate);
phonelist.set(i, phoneupdate);
}
}


System.out.println("修改成功!");
}


public void all() {
// Phone Allphone = new Phone();
// //运用toarray时定义object类型的数组接收,再强转phone类型利用d来接收b数组中的属性
// Object[] b = phonelist.toArray();
Iterator<Phone> iter = phonelist.iterator();
while (iter.hasNext()) {
Phone book = iter.next();
System.out.println(book);
}
}


public void findname() {
// Object[] b = phonelist.toArray();
Phone phonefindname = new Phone();
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要查找的人名:");
String nameInFindName = sc.nextLine();
Iterator<Phone> iter = phonelist.iterator();
while (iter.hasNext()) {
Phone book = iter.next();
if (book.name.equals(nameInFindName)) {
System.out.println(book);
}
}
}


public String toString() {
return "姓名:" + name + "\t性别" + sex + "\t年龄" + age + "\t电话号码" + phonenum
+ "\tqq号码" + qqnum + "\t地址" + address;
}
}


package arrays;


import java.util.Scanner;


public class Testphone {
public static void main(String[] args) {
while (true) {
System.out.println("----------------电话本管理系统---------------");
System.out.println("1.添加 2.删除 3.修改 4.查询所有 5.根据姓名查询 0.退出");
System.out.println("----------------电话本管理系统---------------");
System.out.println("请选择业务:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
switch (a) {
case 1:
Phone Addphonebook = new Phone();
Addphonebook.add();
break;
case 2:
Phone Deletephonebook = new Phone();
Deletephonebook.delete();
break;
case 3:
Phone Updatephonebook = new Phone();
Updatephonebook.update();
break;
case 4:
Phone Allphonebook = new Phone();
Allphonebook.all();
break;
case 5:Phone Findnamephonebook = new Phone();
Findnamephonebook.findname();break;
case 0:
default:
}
}
}
}




小结:
加个static修饰phonelist就好啦 当然 除此之外还有一些小的逻辑处理不太恰当 改动一下就可以
static修饰的是归类所有 也就是被所有对象所共享使用
在进行各种操作的时候每次都new一个phone对象出来 如果不加static则他们之间的phonelist数据不能共享 所以每次都要在没有数据的基础上进行逻辑处理
在for循环里面获取每一个数组元素就可以
声明时确定<Phone>类型就不用强转了

然后取其各属

0 0