사용자에게 점령 된 호텔 방을 입력하라는 프로그램을 작성해야합니다. 일단 사용자가 -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 if'절에서 'else if (arr [mid]'을 전환하고 싶을 수도 있습니다. –
디버거 사용 방법을 배워야합니다. 많은 시간을 절약 할 수 있습니다. –