CH12 – Sequential Search

  1. Complete the previous exercises in Chapter 12 before completing this exercise.
  2. Open CardDriverTwo.java and add the following method.
public static int search(Card[] cards, Card target){
  for(int i = 0; i < cards.length; i++){
    if(cards[i].equals(target)){
      return i;
    }
  }
  return -1;
}
  1. Add the following to the main method.
int suit = Integer.parseInt(args[0]);
int rank = Integer.parseInt(args[1]);
Card theCard = new Card(suit,rank);
System.out.println(theCard);
int location = search(cards, theCard);
System.out.println(cards[location]);
  1. Compile and run the program.
$ javac CardDriverTwo.java
$ java CardDriverTwo 2 2
Ace of Clubs
King of Spades
2 of Hearts
2 of Hearts
$ java CardDriverTwo 13 2
Ace of Clubs
King of Spades
King of Hearts
King of Hearts
$ java CardDriverTwo 8 3
Ace of Clubs
King of Spades
8 of Spades
8 of Spades

The complete class should appear as follows.

public class CardDriverTwo {

  public static int search(Card[] cards, Card target){
    for(int i = 0; i < cards.length; i++){
      if(cards[i].equals(target)){
        return i;
      }
    }
    return -1;
  }

  public static void main(String[] args){
    Card[] cards = new Card[52];
    int index = 0;
    for(int suit = 0; suit < 4; suit++)
    {
      for(int rank=1; rank <= 13; rank++)
      {
        cards[index] = new Card(rank,suit);
        index++;
      }
    }
    System.out.println(cards[0]);
    System.out.println(cards[51]);

    int suit = Integer.parseInt(args[0]);
    int rank = Integer.parseInt(args[1]);
    Card theCard = new Card(suit,rank);
    System.out.println(theCard);
    int location = search(cards, theCard);
    System.out.println(cards[location]);

  }
}