在做java酒店开房系统的时候,由于是通过数组来操作的,所以在数组处理的时候,遇到了一些问题,如从键盘输入房间号的时候,要考虑和数组中存在的房间号是否匹配的时候出现问题,因为要判断是否相等时,我们需要用循环去遍历数组元素,如果遍历找到输入的值和数组中的值相等时,则按顺序执行,如果不是的话,应该用else来报错,输出不是数组中的元素,但是由于此else是在for循环中的,那么如果找不到此元素值时,虽然会报错,但还是会继续循环直到遍历完成数组,所以会一直显示else语句块中的数值,如果在else里给他break的话,那么只会比较数组中的第一个元素值,看是否与键盘输入的值相等,如果不等的话,便会直接跳到else语句块而不进行后续数值的比较。为了解决这个问题,我们需要一开始的时候给它一个标识符,用来存放数组的下标,然后对这个标志符进行循环比较,就可以了,具体的操作代码如下所示:
int index=-1;
for(int i=0;i<roomInfo.length;i++)
{
if(roomInfo[i][0].equals(roomId))
index=i;
}
if(index!=-1)
{
if((roomInfo[index][3].equals("empty")))
{
System.out.println("请输入客户姓名:");
String addName=input.next();
roomInfo[index][3]=addName;
String inDate=sdf.format(new Date());
roomInfo[index][4]=inDate;
System.out.println("该客户成功入住!");
System.out.println("显示现在的客房信息!");
showRoom();
}
else if(!(roomInfo[index][3].equals("empty")))
{
System.out.println("该房间已有人入住,请重新输入!");
openRoom();
}
}
else
{
System.out.println("此房间不存在,请重新输入!");
openRoom();
}