Vet inte om du fått svar men här är mina spontana kommentarer(ursäkta om jag låter vresig ):
Du undrade varför dina breaks inte fungerade? Det är för att du försöker bryta dig ur if statementet efter att du redan visat dialogen. Break fyller ingen funktion här.
I dina if's kollar du även alltid om i>0 och ja det är det ju alltid så länge loopen körs, så det behöver du inte kolla.
Du har en konstruktor som aldrig kallas vad vi kan se, så den kan du ta bort.
Jag förstår inte vad for loopen är till för, den loopar 1000 gånger? Till vilken mening?
IndexOutOfBounds kastas när du, mycket riktigt, försöker använda ett index som inte ligger i intervallet. Tänk på nollindexeringen.
Förstår inte riktigt varför du ska lagra input strängen i en lista, blir det inte onödigt komplext när du egentligen bara ska jämföra två strängar åt gången?
Rent allmänt är koden ganska svårläst, försök skriv om den så blir det enklare att felsöka. Gör inte för mycket på samma rad, har tydligare variabel namn etc.
Här är mitt försök:
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class WordGame extends JFrame {
public static JTextArea tA = new JTextArea(100, 100);
public static void main(String[] args) {
String first = "";
String second = "";
while (true) {
// Input
first = JOptionPane.showInputDialog("Skriv första ordet:");
second = JOptionPane.showInputDialog("Skriv andra ordet:");
if (first == null || second == null) {
JOptionPane.showMessageDialog(tA, "Du måste ange två ord, spelet är slut!");
break;
}
// Error checking
if (!first.matches("[a-zA-Z]+") || !second.matches("[a-zA-Z]+"))
JOptionPane.showMessageDialog(tA, "Ord kan bestå bara av bokstäver!");
else if (first.equals(second))
JOptionPane.showMessageDialog(tA, "Du kan inte mata in samma ord två gånger!");
else if (first.charAt(first.length() - 1) != second.charAt(0))
JOptionPane.showMessageDialog(tA,
"Ordets första bokstav måste ha samma bokstav som förra ordets sista bokstav");
else
JOptionPane.showMessageDialog(tA,
"Yay, ordet " + first + " sista bokstav matchar ordet " + second + " första bokstav!");
}
}
}
Har inte testat så noga, men tror den gör det du vill.