All pastes #250463 Raw Edit

Anonymous

public text v1 · immutable
#250463 ·published 2006-11-17 00:06 UTC
rendered paste body
/**
   A class for executing binary searches through an array.
*/
public class BinarySearcher
{  
   /**
      Constructs a BinarySearcher.
      @param anArray a sorted array of integers
   */
   public BinarySearcher(Appointment[] anArray)
   {
      a = anArray;
   }
   
   /**
      Finds a value in a sorted array, using the binary
      search algorithm.
      @param v the value to search
      @return the index at which the value occurs, or -1
      if it does not occur in the array
   */@@
   public int search(Appointment v)
   {  
	   int midp = 0;
      int low = 0;
      int high = a.length - 1;
      while (low <= high)
      {
         int mid = (low + high) / 2;
         midp = mid;
         int diff = a[mid].compareTo(v);
      
         if (diff == 0) // a[mid] == v
            return 0;
         else if (diff < 0) // a[mid] < v 
            low = mid + 1;
         else
            high = mid - 1;
      }
      return midp + 1;
   }@@

   private Appointment[] a;
}





public class AppointmentBook{
	
	public AppointmentBook(){
	}
	public AppointmentBook(Appointment[] an){
		anArray = an;
	}@@
	public String add(Appointment a){
		BinarySearcher searcher = new BinarySearcher(anArray);
		int sea = searcher.search(a);
		if (sea == 0){
			return "Error: Overlapping Appointments!";
		}
		else{
			Appointment[] an = new Appointment[anArray.length+2];
			for(int n = 0; n < sea - 1; n++){
				an[n] = anArray[n];
			}
			for(int n = sea; n < anArray.length+1; n++){
				an[n] = anArray[n - 1];
			}
			an[sea - 1] = a;
			anArray = an;
			return "Appointment Added!";
		}@@
			
	}@@
	public String print(){
		for (int n = 0; n < anArray.length - 1; n++){
			x = anArray[n];
			return x.toString();
		}
		return null;
	}@@
	private Appointment x;
	private Appointment[] anArray;
}




import java.lang.Comparable;

public class Appointment {
	public Appointment() {
	}

	public Appointment(String d, String de, double st, double et) {
		day = d;
		description = de;
		start = st;
		end = et;
	}

	public void setDay(String d) {
		day = d;
	}

	public String getDay() {
		return day;
	}

	public void setDescription(String de) {
		description = de;
	}

	public String getDescription() {
		return description;
	}

	public void setStart(int st) {
		start = st;
	}

	public double getStart() {
		return start;
	}

	public void setEnd(int et) {
		end = et;
	}

	public double getEnd() {
		return end;
	}

	public String toString() {
		return "Appointment[Day: " + day + " Description: " + description
				+ " Start Time: " + start + " End Time: " + end + "]";
	}

	public int compareTo(Appointment b) {
		String aday = this.getDay();
		String bday = b.getDay();
		if (aday.compareTo(bday) == 0) {
			double ast = this.getStart();
			double ae = this.getEnd();
			double bst = b.getStart();
			double be = b.getEnd();
			if (ast == bst) {
				return 0;
			} else if (ast < bst) {
				if (ae <= bst) {
					return 1;
				} else {
					return 0;
				}
			} else if (ast > be) {
				return -1;
			} else {
				return 0;
			}
		} else {
			return aday.compareTo(bday);
		}
	}

	private String day, description;

	private double start;

	private double end;
}