This can be a royal pain, so here are some hints:
Some key parts and point for implementing the boolean:
1. A way to get in the boolean information: So here, just have the user type in yes or no, rather than the admittedly better way of having a check box, for example.
2. A way to output both pieces of associated search result; do it just in one text box.
370 else if (searchComboBox.getSelectedItem().equals("Genre")) { 371 s.selectionSortByGenre(movieArray); 372 int result = s.binarySearchOfGenre(movieArray, searchInputTF.getText()); 373 if (result == -1) { 374 searchResultTF.setText("Not found"); 375 376 } 377 searchResultTF.setText(movieArray[result].getMovieName() + " --" + movieArray[result].getHaveSeenIt()); 378 379 }
3. An approach to doing the binary search of a boolean:
I'll just give you the code, but please do try to understand why this works by reading the comments. And when doig so, just think of how the data will be ordered as follows:
0000000000000001111111111
And so think about what happens in the above case when we land on the first mid, which will be a 0. If we're looking for a 0, then we've found one; otherwise, we would need to look in the right hand half of the array, and so make one past our mid the new low. See below.
97 public int binarySearchOfHaveSeenIt(Movie2222 arr[], String key) { 98 99 boolean haveSeenIt = false; 100 if(key.equalsIgnoreCase("yes")){ 101 haveSeenIt = true; 102 } 103 104 int low = 0; 105 int high = arr.length - 1; 106 while (low <= high) { 107 int mid = (low + high) / 2; 108 if (arr[mid].getHaveSeenIt() == haveSeenIt) {//So if looking for false, return false, if looking for true, return true. 109 return mid; 110 } else if (arr[mid].getHaveSeenIt() == false) {//This means we must be looking for true, but we landed on a false, so: 111 low = mid + 1; 112 } else {//This means we must be looking for false, but landed on a true, so: 113 high = mid - 1; 114 } 115 } 116 return -1; 117 }
For this homework assignment, you will make your own GUI Sort & Search and upload it. Naturally, there will be a lot of copying and pasting, and that's both normal and fine. But I will make it so that you will have to do a few things differnently, so be careful after you paste to make all the necessary changes.