I have a small piece of code designed to draw a card when a button is clicked. As of now I get the following error (among others) when I active actionPerformed(): Exception in thread "AWT-EventQueue-0 java.lang.IndexOutOfBoundsException...". I'm completely new to this so forgive me if it's a simple mistake.
import java.awt.*;
import java.awt.event.*;
import java.util.*; /*Used for Random and ArrayList*/
public class AL extends Frame implements WindowListener,ActionListener {
TextField text = new TextField(20);
Button b;
private int numClicks = 0;
private static ArrayList<Card> deck=new ArrayList<Card>();
private static ArrayList<Card> playerOneDeck=new ArrayList<Card>();
private static ArrayList<Card> playerTwoDeck=new ArrayList<Card>();
public static void main(String[] args) {
AL myWindow = new AL("Well of course you know, this means WAR!");
myWindow.setSize(350,100);
myWindow.setVisible(true);
ArrayList<Card> playerTwoDeck=new ArrayList<Card>();
}//end main()
public AL(String title) {
super(title);
setLayout(new FlowLayout());
addWindowListener(this);
b = new Button("Draw");
add(b);
add(text);
b.addActionListener(this);
ArrayList<Card> deck=new ArrayList<Card>();
ArrayList<Card> playerOneDeck=new ArrayList<Card>();
deck=initializeDeck();
Collections.shuffle(deck);
}
public void actionPerformed(ActionEvent e) {
numClicks++;
Card theCard=playerOneDeck.get(0);
text.setText(theCard.name);
text.setText(theCard.name);
}
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
/*Assign names, values, and suits to all of the Card objects.*/
public static ArrayList<Card> initializeDeck() {
Card[] tempDeck=new Card[52];
ArrayList<Card> completeDeck=new ArrayList<Card>();
for (int i=0; i<tempDeck.length; i++) {
tempDeck[i]=new Card();
tempDeck[i].name="Two";
tempDeck[i].value=2;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Three";
tempDeck[i].value=3;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Four";
tempDeck[i].value=4;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Five";
tempDeck[i].value=5;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Six";
tempDeck[i].value=6;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Seven";
tempDeck[i].value=7;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Eight";
tempDeck[i].value=8;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Nine";
tempDeck[i].value=9;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Ten";
tempDeck[i].value=10;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Jack";
tempDeck[i].value=11;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Queen";
tempDeck[i].value=12;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="King";
tempDeck[i].value=13;
i++;
tempDeck[i]=new Card();
tempDeck[i].name="Ace";
tempDeck[i].value=14;
}//end FOR
/*Assign suits*/
/*keep in mind that the array is now [2], [3],..[k],[a],[2],[3],[k],[a],etc */
for (int j=0; j<tempDeck.length; j++) {
tempDeck[j].suit="Hearts";
j++;
tempDeck[j].suit="Diamonds";
j++;
tempDeck[j].suit="Spades";
j++;
tempDeck[j].suit="Clubs";
}//end FOR
for (int k=0; k<tempDeck.length;k++) {
completeDeck.add(tempDeck[k]);
}
return completeDeck;
}//end initializeDeck()
public void windowOpened(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
}//end AL class