Java学习笔记9 代码练习3

目录

练习一:通信录 

练习二:List元素去重


练习一:通信录 

软件功能:实现一个软件的地址本,地址本中保存多个联系人的信息(名字,电话,电子邮
件,住址),可以在地址本中增加一个联系人,通过名字删除联系人,通过名字查找联系人 
实现步骤:本软件需要三个类 
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);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值