案例:小王是一名房产中介,每天上班会查看房源与新增房源。这里小慕已经为你提炼了需求,来看一下小王希望的程序运行效果:
1. 房源类
package person.xsc.practice;
public class Home {
private int homeId;
private String homeName;
private String homeAddress;
private String homeKinds;
public Home() {}
public Home(int homeId,String homeName,String homeAddress,String homeKinds) {
this.homeId=homeId;
this.homeName=homeName;
this.homeAddress=homeAddress;
this.homeKinds=homeKinds;
}
public int getHomeId() {
return homeId;
}
public void setHomeId(int homeId) {
this.homeId = homeId;
}
public String getHomeName() {
return homeName;
}
public void setHomeName(String homeName) {
this.homeName = homeName;
}
public String getHomeAddress() {
return homeAddress;
}
public void setHomeAddress(String homeAddress) {
this.homeAddress = homeAddress;
}
public String getHomeKinds() {
return homeKinds;
}
public void setHomeKinds(String homeKinds) {
this.homeKinds = homeKinds;
}
@Override
public String toString() {
return "房源编号:" + getHomeId()+ "\n房源名称:" + getHomeName()+ "\n房源地址:" + getHomeAddress()+ "\n房屋类型:" + getHomeKinds();
}
}
2. 测试类
package person.xsc.practice;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class HomeTest {
public static void Mainmenu() {
System.out.println("*****************************");
System.out.println(" " + "房源中心" + " ");
System.out.println(" " + "1--添加房源");
System.out.println(" " + "2--查看具体房源信息" + " ");
System.out.println(" " + "3--区间查看房源信息" + " ");
System.out.println(" " + "0--退出房源中心" + " ");
System.out.println("*****************************");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
Map<Integer,Home> homesMap=new HashMap<Integer,Home>();
boolean flag = true;
int input=0;//操作数
while(flag) {
Mainmenu();
System.out.println("请输入对应数字进行操作:");
try {
input = scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的数据有误,只能为数字!");
scanner.next();
continue;
}if(input<0||input>3) {
System.out.println("输入的数字超出范围!");
}else {
switch(input) {
case 0:{
System.out.println("**********程序结束!*********");
flag=false;
break;
}
case 1:{
int newHomeId=0;
while(true) {
try {
System.out.println("**********添加房源*********");
System.out.println("输入房源编号:"+ '\n'+"编号从0开始,并为连续数值,如1,2,3");
newHomeId= scanner.nextInt();
if (homesMap.containsKey(newHomeId)) {
System.out.println("该房源编号已经存在!请重新输入!");
continue;
}
} catch (Exception e) {
System.out.println("输入的数据有误,只能为数字!");
scanner.next();
continue;
}
System.out.println("请输入房源名称:");
String newHomeName = scanner.next();
System.out.println("请输入房源地址:");
String newHomeAddress = scanner.next();
System.out.println("请输入房源户型:");
String newHomeKinds = scanner.next();
Home temp=new Home(newHomeId,newHomeName,newHomeAddress,newHomeKinds);
homesMap.put(newHomeId,temp);
break;
}
break;
}
case 2:{
System.out.println("**********全部房源信息*********");
Set <Entry<Integer,Home>> entrySet=homesMap.entrySet();
for(Entry<Integer,Home> entry:entrySet) {
System.out.println("房源编号 房源名称");
System.out.println(entry.getKey()+" "+entry.getValue().getHomeName());
}
boolean b=true;
int a=0;
while(b) {
if(a==1) {
System.out.println("对不起,没有你输入的这个房源编号!:");
}
System.out.println("请输入要查看具体房源编号:");
int newHomeId=0;
try {
newHomeId=scanner.nextInt();
for(Map.Entry<Integer,Home> home : entrySet){
if(newHomeId==home.getKey()){
System.out.println(homesMap.get(newHomeId));
b=false;
a=0;
}else {
a=1;
}
}
}catch (Exception e) {
System.out.println("输入的数据有误,只能为数字!");
scanner.next();
a=0;
continue;
}
}
break;
}
case 3:{
System.out.println("**********全部房源信息*********");
Set <Entry<Integer,Home>> entrySet=homesMap.entrySet();
for(Entry<Integer,Home> entry:entrySet) {
System.out.println("房源编号 房源名称");
System.out.println(entry.getKey()+" "+entry.getValue().getHomeName());
}
int startInput = 0;//第一个区间编号
int overInput=0;//第二个区间编号
boolean a=true;
while(a) {
boolean b=true;
while(b) {
System.out.println("请输入要查看房源信息的第一个编号:");
try {
startInput=scanner.nextInt();
b=false;
} catch (Exception e) {
System.out.println("输入的数据有误,只能为数字!");
scanner.next();
continue;
}
}
boolean c=true;
while(c) {
System.out.println("请输入要查看房源信息的第二个编号:");
try {
overInput = scanner.nextInt();
c=false;
} catch (Exception e) {
System.out.println("输入的数据有误,只能为数字!");
scanner.next();
continue;
}
}
if(startInput>overInput||startInput<0||overInput>homesMap.size()) {
System.out.println("输入的编号超出范围!");
continue;
}else {
for(int i=startInput;i<=overInput;++i) {
System.out.println(homesMap.get(i));
System.out.println("-------------------");
}
a=false;
}
}
break;
}
}
}
}
}
}
3. 输出
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
1
**********添加房源*********
输入房源编号:
编号从0开始,并为连续数值,如1,2,3
0
请输入房源名称:
天通苑2号
请输入房源地址:
天通苑
请输入房源户型:
三室一厅
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
1
**********添加房源*********
输入房源编号:
编号从0开始,并为连续数值,如1,2,3
1
请输入房源名称:
天通苑2号
请输入房源地址:
天通苑
请输入房源户型:
三室一厅
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
1
**********添加房源*********
输入房源编号:
编号从0开始,并为连续数值,如1,2,3
2
请输入房源名称:
西直门1号
请输入房源地址:
西直门
请输入房源户型:
两室一厅
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
/
输入的数据有误,只能为数字!
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
6
输入的数字超出范围!
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
2
**********全部房源信息*********
房源编号 房源名称
0 天通苑2号
房源编号 房源名称
1 天通苑2号
房源编号 房源名称
2 西直门1号
请输入要查看具体房源编号:
/
输入的数据有误,只能为数字!
请输入要查看具体房源编号:
6
对不起,没有你输入的这个房源编号!:
请输入要查看具体房源编号:
0
房源编号:0
房源名称:天通苑2号
房源地址:天通苑
房屋类型:三室一厅
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
3
**********全部房源信息*********
房源编号 房源名称
0 天通苑2号
房源编号 房源名称
1 天通苑2号
房源编号 房源名称
2 西直门1号
请输入要查看房源信息的第一个编号:
/
输入的数据有误,只能为数字!
请输入要查看房源信息的第一个编号:
9
请输入要查看房源信息的第二个编号:
2
输入的编号超出范围!
请输入要查看房源信息的第一个编号:
0
请输入要查看房源信息的第二个编号:
9
输入的编号超出范围!
请输入要查看房源信息的第一个编号:
0
请输入要查看房源信息的第二个编号:
2
房源编号:0
房源名称:天通苑2号
房源地址:天通苑
房屋类型:三室一厅
-------------------
房源编号:1
房源名称:天通苑2号
房源地址:天通苑
房屋类型:三室一厅
-------------------
房源编号:2
房源名称:西直门1号
房源地址:西直门
房屋类型:两室一厅
-------------------
*****************************
房源中心
1--添加房源
2--查看具体房源信息
3--区间查看房源信息
0--退出房源中心
*****************************
请输入对应数字进行操作:
0
**********程序结束!*********