Java - AUTOMATAS FINITOS DETERMINISTAS

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

AUTOMATAS FINITOS DETERMINISTAS

Publicado por Fernado (5 intervenciones) el 29/11/2018 22:42:45
Tengo un afd sencillo que lo eh realizado con metodo y con funciones del ArrayChar, pero quisiera que ese valor que me botan los metodos sean presentados despues de presionar un boton a un Text Area este es el codigo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package afd;
import java.util.Scanner;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
 
 
public class Afd {
 
    static char [] caracteres;
    boolean aceptacion;
    int contador;
 
    public static void main(String[] args) {
         //new JFrameAFD().setVisible(true);
        Scanner sc = new Scanner(System.in);
        Afd automata = new Afd();
 
 
        System.out.println("Ingrese La cadena");
 
        String cad;
 
        cad = sc.nextLine();
 
         while (cad.contains("bb")||(cad.contains("ba")||(cad.contains(" ")))){
            System.out.println("Cadena no Aceptada");
            System.out.println("\n");
            System.out.print("Ingrese La cadena que desea determinar si se encuentra en el AFD: ");
            cad = sc.nextLine();
            System.out.println("\f");
         }
 
        caracteres = cad.toCharArray();
        automata.Inicial();
 
 
 
        if(automata.aceptacion){
            System.out.println("\n");
            System.out.println("La Cadena es Aceptada");
        }else{
            System.out.println("\n");
            System.out.println("La Cadena no es Aceptada");
        }
    }
 
 
 
    public void Inicial() {
        contador = 0; //Declaramos en 0 para empezar las transiciones
        q0();
    }
 
 
    public void q0() {
 
        aceptacion = false;
        if(contador<caracteres.length){
            if(caracteres[contador]== 'a'){ //Si es el caracter que define el automata para la transicion
                String a = "Estado q0";
                System.out.println("Estado q0");
                contador++;
                q0(); //Transiciones si vale 'a' se mantenga en el estado q0
 
            }else if (caracteres[contador]=='b'){
                contador++;
                q1();
            }
        }
    }
    public void q1() {
 
        System.out.println("Estado q1 de Aceptacion");
        aceptacion = true;
         if(contador<caracteres.length){
            if(caracteres[contador]== 'a'){
                contador++;
                q2();
            }else if (caracteres[contador]=='b'){
                contador++;
                q2();
            }
        }
 
 
    }
    public void q2() {
        System.out.println("Estado q2");
        aceptacion = false;
        if(contador<caracteres.length){
            if(caracteres[contador]== 'a'){
                contador++;
                q2();
            }else if (caracteres[contador]=='b'){
                contador++;
                q2();
                return;
            }
        }
 
    }
 
}

Lo que muestra al ejecutarse en consola seria asi:

img

Como es en consola yo kisiera que lo q pide la clase scanner sea igual a lo que uno escriba en un textfield y luego al presionar el boton analizar me muestre lo q aparecio en consola anteriormente


img2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

AUTOMATAS FINITOS DETERMINISTAS

Publicado por Billy Joel (876 intervenciones) el 29/11/2018 23:30:50
Le das doble click al botón ANALIZAR CADENA, eso creara un método para manejar la acción de ese botón.
Entonces supongamos que le has puesto por nombre al jtextfield txtCadena: txtCadena.getText().
A tu clase Afd le vas añadir el método setCaracteres

1
2
3
setCaracteres(char [] caracteres){
    this.caracteres = caracteres;
}

Los métodos de la clase Adf q0, q1 y q2 deben devolver un String, algo como esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
String s = "";
    aceptacion = false;
    if (contador < caracteres.length) {
        if (caracteres[contador] == 'a') { //Si es el caracter que define el automata para la transicion
            String a = "Estado q0";
            s += "Estado q0\n";
            contador++;
            s += q0(); //Transiciones si vale 'a' se mantenga en el estado q0
        } else if (caracteres[contador] == 'b') {
            contador++;
            s += q1();
        }
    }
    return s;
}
 
public String q1() {
    String s = "Estado q1 de Aceptacion\n";
    aceptacion = true;
    if (contador < caracteres.length) {
        if (caracteres[contador] == 'a') {
            contador++;
            s += q2();
        } else if (caracteres[contador] == 'b') {
            contador++;
            s += q2();
        }
    }
    return s;
}
 
public String q2() {
    String s = "Estado q2\n";
    aceptacion = false;
    if (contador < caracteres.length) {
        if (caracteres[contador] == 'a') {
            contador++;
            s += q2();
        } else if (caracteres[contador] == 'b') {
            contador++;
            s += q2();
            return s;
        }
    }
    return s;
}
 
public String Inicial() {
    contador = 0; //Declaramos en 0 para empezar las transiciones
    return q0();
}

Entonces en el action del botón sería algo como:
1
2
3
4
5
6
7
8
9
Afd afd = new Afd();
afd.setCaracteres(txtCadena.getText().toCharArray());
String s = afd.Inicial();
if(automata.aceptacion){
        s += "\nLa Cadena es Aceptada";
}else{
        s += "\nLa Cadena no es Aceptada";
}
jtextArea.setText(s);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

AUTOMATAS FINITOS DETERMINISTAS

Publicado por Fernando (5 intervenciones) el 30/11/2018 03:32:21
Muchas Gracias @Billy Joel te agradezco mucho puedo continuar con mi proyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar