目录
练习一:通信录
软件功能:实现一个软件的地址本,地址本中保存多个联系人的信息(名字,电话,电子邮
件,住址),可以在地址本中增加一个联系人,通过名字删除联系人,通过名字查找联系人
实现步骤:本软件需要三个类
1)联系人信息类
属性:名字,电话,电子邮件,住址
方法:设置名字,设置地址,取得名字,取得地址 ,设置邮件,取得邮件,设置电话,取得电话
2)地址本类
属性:用来保存联系人信息的 集合
方法:增加联系人信息,通过名字删除联系人信息,通过名字查找联系人信息
3)主函数类
循环提示
1)展示地址
2)增加地址
3)删除地址
4)查找地址
0)退出系统
package addressbook;
/**
1)联系人信息类
属性:名字,电话,电子邮件,住址
方法:设置名字,设置地址,取得名字,取得地址 ,
设置邮件,取得邮件,设置电话,取得电话
*/
public class Contactinformation {
private String name;
private String phoneNumber;
private String emailNumber;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEmailNumber() {
return emailNumber;
}
public void setEmailNumber(String emailNumber) {
this.emailNumber = emailNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getInfo() {
return "\t"+name+" "+phoneNumber+" "+emailNumber+" "+address;
}
}
package addressbook;
/**
2)地址本类
属性:用来保存联系人信息的 集合
方法:增加联系人信息,通过名字删除联系人信息,通过名字查找联系人信息
*/
import java.util.ArrayList;
import java.util.List;
public class Address {
private List<Contactinformation>list = new ArrayList<Contactinformation>();
//1.查找全部联系人
public void showInfoAll() {
System.out.println("全部联系人名字、电话、电子邮件、住址如下:");
for (int i = 0; i < list.size(); i++) {
System.out.println( list.get(i).getInfo() );
}
System.out.println("=============请输入操作==============");
}
//4.查找并显示
public void showInformation(String name) {
int flag_site = findByName(name);
if(flag_site < 0) System.out.println("没有找到该联系人!");
else {
System.out.println("找到了!联系人名字、电话、电子邮件、住址如下:");
System.out.println( list.get(flag_site).getInfo() );
}
System.out.println("=============请输入操作==============");
}
// 2.添加联系人
public void increaseAddress(Contactinformation coninfo) {
list.add(coninfo);
}
// 3.删除联系人
public void deleteAddress(String name) {
int flag_site = findByName(name);
if(flag_site < 0) System.out.println("没有找到该联系人!");
else {
System.out.println("找到了!联系人名字、电话、电子邮件、住址如下:");
System.out.println( list.get(flag_site).getInfo() );
list.remove(flag_site);
}
System.out.println("=============删除成功!==============");
System.out.println("=============请输入操作==============");
}
//按name查找联系人,并返回联系人信息所在下标
private int findByName(String name) {
int flag_site=-1;
for (int i=0; i < list.size(); i++)
if(list.get(i).getName().equals(name)) { //字符串比较--坑1
flag_site = i;
break;
}
return flag_site;
}
}
package addressbook;
/**
3)主函数 类
循环提示
1:展示地址
2:增加地址
3:删除地址
4:查找地址
0:退出系统
*/
import java.util.Scanner;
public class MainConAddress {
private static Address address = new Address();
private static Contactinformation coninfo ;
public static void main(String[] args) {
String info="1:展示地址 2:增加地址 3:删除地址 4:查找地址 0:退出系统";
Scanner scanner=new Scanner(System.in);
while(true) {
System.out.println(info);
int key=scanner.nextInt();
switch (key) {
case 1: //1:展示地址
System.out.println("=============展示地址==============");
//System.out.println("=============请输入人名==============");
//String name1 = scanner.next();
address.showInfoAll();
break;
case 2: //2:增加地址
coninfo = new Contactinformation();
System.out.println("=============增加地址==============");
System.out.println("=============请输入人名==============");
String name2 = scanner.next();
coninfo.setName(name2);
System.out.println("=============请输入电话==============");
String phoneNumber2 = scanner.next();
coninfo.setPhoneNumber(phoneNumber2);
System.out.println("=============请输入邮箱==============");
String emailNumber2 = scanner.next();
coninfo.setEmailNumber(emailNumber2);
System.out.println("=============请输入地址==============");
String address2 = scanner.next();
coninfo.setAddress(address2);
address.increaseAddress(coninfo);
System.out.println("=============增加成功!==============");
break;
case 3: // 3:删除地址
System.out.println("=============删除地址==============");
System.out.println("=============请输入人名==============");
String name3 = scanner.next();
address.deleteAddress(name3);
break;
case 4: // 4:查找地址
System.out.println("=============查找地址==============");
System.out.println("=============请输入人名==============");
String name4 = scanner.next();
address.showInformation(name4);
break;
case 0:
scanner.close();
System.exit(0);
break;
default:
break;
}
}
}
}
练习二:List元素去重
定义一个List,使用随机数填充,在保持原有排序的情况下,去掉重复的元素。
@Test
//定义一个List,使用随机数填充,在保持原有排序的情况下,去掉重复的元素。
public void test05() {
// 方法一循环判断去重
List<Integer> list5=new ArrayList<Integer>();
for (int i = 0; i < 20; i++) {
list5.add((int)(new Random().nextInt(20)));
}
System.out.println(list5);
for (int i = 0; i < list5.size(); i++) {
for (int j = i+1; j < list5.size(); j++) {
if (list5.get(i)==list5.get(j)&&i!=j) {
//循环判断去重
list5.remove(j);
j--;
}
}
}
System.out.println(list5);
//方法二使用迭代器
List<Integer> list6=new ArrayList<Integer>();
for (int i = 0; i < 20; i++) {
list6.add((int)(new Random().nextInt(20)));
}
System.out.println(list6);
for(int i = 0; i < list6.size(); i++) {
Iterator<Integer> iterator6=list6.iterator();
for(int j=0; j<= i; j++)
iterator6.next(); //先后移动i次,移动后指向list6.get(i)
while (iterator6.hasNext()) {
if(list6.get(i)==iterator6.next()) {
iterator6.remove();
i--;
}
}
}
System.out.println(list6);
//方法三使用contains()
List<Integer> list7=new ArrayList<Integer>();
for (int i = 0; i < 20; i++) {
list7.add((int)(new Random().nextInt(20)));
}
System.out.println(list7);
List<Integer> listResult=new ArrayList<Integer>();
for(int t:list7)
if(!listResult.contains(t))
listResult.add(t);
System.out.println(listResult);
}