So I'm writing a code for my CS class and it requires me to use a binary search.

However, whenever I run the code, I get an error stating [this](https://i.stack.imgur.com/cIIIA.png)

It's saying there's an issue with my binary search, but I can't figure out why. 

If you need me to I can post the other 2 classes I made but I'm really stuck as to why it's not going through.

I feel like it's a stupid mistake with my articulation or calling of the search.
thanks in advance friends.

EDIT:
Here's the requirement for the code if it helps you better.

Modify the Movies program so that it keeps the DVDs sorted by director. In order to produce efficient code do not apply sorting to keep the DVDs sorted. 
Redesign method add instead, so that it inserts the DVD into a sorted collection and produces sorted collection. 
In addition, implement an efficient method to search for given DVD by the director. Method should be called searchForDVD. It should have only String type formal parameter that provides the director that we are searching for. The return type should be an integer that specifies the index in the array where the DVD is located. When search is not successful method returns -1. Method searchForDVD should be in the DVD collection class. 
Modify main method so that at the end it also tests method searchForDVD by performing one successful and one unsuccessful search.
Display the DVD found in successful search, and write an appropriate comment otherwise.

PROGRAM RUN outline:

Display all DVDs

Add two more DVDs

Display all DVDs after adding those two DVDs

Search for specific DVD that is in the collection and display it

Search for specific DVD that is not in the collection

***Here's the code in it's entirety for this one class.***

---

```
import java.util.*;

public class DVDCollection

{
    private DVD[] collection;
    private double totalCost;

    public DVDCollection()
    {
        collection = new DVD[100];
        totalCost = 0.0;
    }

    public void addDVD(String title, String director, int year, double cost, boolean bluray)
    {
        DVD newDvd = new DVD(title, director, year, cost, bluray);
        int index = Collections.binarySearch(collection, newDvd);
        if(index >= 0) {
            System.out.println("DVD with title " + newDvd.getTitle() + " already exists.");
        }
        else {
            int index1 = -index - 1;
            collection = insertDVD(collection, newDVD, index1);
            System.out.println("DVD with title " + newDvd.getTitle() + " added.");
        }
        totalCost += cost;
    }

    private DVD[] insertDVD(DVD[] original, DVD newDVD, int in)
    {
        int length = original.length;
        DVD[] destination = new DVD[length+1];
        System.arraycopy(original, 0, destination, 0, in);
        destination[in] = newDVD;
        System.arraycopy(original, in, destination, in+1, length-in);
        return destination;
    }

    public String toString()
    {
        NumberFormat fmt = NumberFormat.getCurrencyInstance();

        String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
        report += "My DVD Collection\n\n";

        report += "Number of DVDs: " + count + "\n";
        report +="Total cost: " + fmt.format(totalCost) + "\n";
        report += "Average cost: " + fmt.format(totalCost/count);

        report += "\n\nDVD List: \n\n";

        for (int dvd = 0; dvd < count; dvd++)
            report += collection[dvd].toString() + "\n";

        return report;
    }

}

```