我应该编写一个程序,提示用户输入被占用的酒店房间。一旦完成,用户输入-1并提示输入随机酒店号码。如果旅馆房间被占用,它就会被占用。如果房间未被占用,则打印机未被占用。我似乎无法弄清为什么没有人会打印。建议?如何获得“未占用”的打印?
import java.util.Arrays;
import java.util.Scanner;
public class GoughAndreaChapter9
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int [] arr=new int[100];
int counter=0;
int currval=0;
System.out.println("Please enter an occupied hotel room number, -1 to quit ");
do
{
currval = sc.nextInt();
if(currval==-1)
break;
if(currval>0)
arr[counter++]=currval;
}
while(currval !=-1);
// sort using java API
int [] temparr=new int[counter];
for(int i = 0; i<counter; i++)
{
temparr[i] = arr[i];
}
arr = temparr;
Arrays.sort(arr);
//binary search.
int low=0;
int high = counter-1;
System.out.println("Please enter a room to search for: ");
currval = sc.nextInt();
int status=0;
int mid;
while(low<high)
{
if(arr[low]==currval)
{
System.out.println("Occupied");
status=1;
break;
}
else if(arr[high]==currval)
{
System.out.println("Occupied");
status=1;
break;
}
mid = low+high/2;
if(arr[mid]==currval)
{
System.out.println("Occupied");
status=1;
break;
}
else if(arr[mid]<currval)
{
low=mid;
}
else if(arr[mid]<currval)
{
high = mid;
}
}
if(status==0)
System.out.println("Unoccupied");
}
}
我建议触发条件这意味着您的程序打印出“未占用”,并逐步执行程序(使用调试器或铅笔和纸张)。 –
在后面的两个else else子句中使用相同的表达式else if(arr [mid]” –
您*需要学习如何使用调试器。这将节省很多小时的头发拉动。 – 2014-01-19 02:50:16