Estouro de pilha?

Fala moçada! Esse é meu primeiro post aki.
Já li alguns tópicos sobre o assunto, mas não consegui resolver meu problema. O código reduzido é o seguinte:

import javax.swing.JOptionPane;

public class AFN {

	String palavra;
	char valor;
	AFN afn;
	
	public AFN()
	{
		afn = new AFN();
	}
	
	public void q0(char valor, String palavra, int i)
	{
		if(valor == '0')
		{
			//vai para q1
			i++;
			valor = palavra.charAt(i);
			afn.q1(valor, palavra, i);
		}
		else
		{
			//vai para q5;
			afn.q5(valor, palavra, i);
		}
	}
	
	public void q1(char valor, String palavra, int i)
	{
		if(valor == '0')
		{
			//vai para q2
			i++;
			valor = palavra.charAt(i);
			afn.q2(valor, palavra, i);
		}
		else
		{
			//vai para q0
			afn.q0(valor, palavra, i);
		}
	}
	
	public void q2(char valor, String palavra, int i)
	{
		if(valor == '1')
		{
			//vai para q3
			i++;
			valor = palavra.charAt(i);
			afn.q3(valor, palavra, i);
		}
		else
		{
			//vai para q2
			afn.q2(valor, palavra, i);
		}
	}

public static void main (String[] args)
	{
		String palavra;
		char valor;
		AFN afn = new AFN();
		
		palavra = JOptionPane.showInputDialog ("Informe a palavra");
		int i = 0;
		valor = palavra.charAt(i);
		afn.q0(valor, palavra, i);
	}
}

E o erro gerado é esse: Exception in thread "main" java.lang.StackOverflowError at AFN.<init>(AFN.java:11) at AFN.<init>(AFN.java:11) at AFN.<init>(AFN.java:11) at AFN.<init>(AFN.java:11)

Se alguém souber como resolver, agradeço :grin:

cara…esse erro ocorre qdo um metodo chamada o proprio metodo inifinitamente.

o problema do seu codigo esta no construtor

public AFN()
   {
      afn = new AFN();
   } 

o construtor chamando o proprio construtor

eu não entendi mto bem o seu codigo, qual a razao da referencia afn dentro da classe AFN ?

qdo vc precisar chamar um metodo dentro de outro na mesma classe, vc não precisa de um referencia, basta chamar o metodo:

public void q0(char valor, String palavra, int i) { if(valor == '0') { //vai para q1 i++; valor = palavra.charAt(i); q1(valor, palavra, i); } else { //vai para q5; q5(valor, palavra, i); } }

blz ?

Kra, valeu pela dica. Uma parte foi resolvida.

O código é para um autômato q aceita somente palavras q contenham 00 e 111 como subcadeias…

Agora outro erro tá acontecendo:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5 at java.lang.String.charAt(Unknown Source) at AFN.q4(AFN.java:79) at AFN.q3(AFN.java:64) at AFN.q2(AFN.java:48) at AFN.q1(AFN.java:32) at AFN.q0(AFN.java:16) at Aplicacao.main(Aplicacao.java:15)

Parece que é nessa linha:
valor = palavra.charAt(i);

Sendo q valor é do tipo char.

C sabe o q pode ser? Brigadão pela ajuda!

Quando ocorre essa exception, é porque você está estrapolando o limite da string.
Ex: casa -> 4 dígitos (indo de 0 à 3).
Se você fizer charAt(4) vai ser disparada essa exception.

Deu para entender???

Quando ocorre essa exception, é porque você está estrapolando o limite da string.
Ex: casa -> 4 dígitos (indo de 0 à 3).
Se você fizer charAt(4) vai ser disparada essa exception.

Deu para entender???

Saquei sim kra.

Brigadão pela ajuda! Vlw