Java - maquinas de turing

 
Vista:

maquinas de turing

Publicado por migue (1 intervención) el 04/12/2008 00:17:20
tengo el siguiente codigo me esta marcando error a la hora de que quiero cambiar un valor del string cad.charAt(i)='('; como le hago para que me cambie el valor n de un string

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class MaquinadeParentesis extends Applet implements ActionListener {

Label menCajaEn;
TextField cajaEnt,cajaSal;

public void init() {

menCajaEn=new Label("Introduzca cadena");
add(menCajaEn);

cajaEnt=new TextField(15);
add(cajaEnt);
cajaEnt.addActionListener(this);

cajaSal=new TextField(20);
add(cajaSal);
cajaSal.addActionListener(this);
cajaSal.setEnabled(false);

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==cajaEnt){

String cadena;
cadena=cajaEnt.getText();
analiza(cadena);
}
}

void analiza(String cad) {

boolean termina=false,exito;
int i=0,estado=0;
cad=aumenta(cad);
while(cad.charAt(i)!='E')i++;

while(!termina) {

switch(estado) {

case 0:
if(cad.charAt(i) == '(')
{estado=0;
cad.charAt(i)='(';
i++;
}

else if(cad.charAt(i) == ')')
{
estado=1;
cad.charAt(i) = 'x';
i--;
}
else if(cad.charAt(i) == 'x')
{
estado=0;
cad.charAt(i) = 'x';
i++;
}
else {
estado=2;
cad.charAt(i) = 'E';
i--;
}
break;

case 1: if(cad.charAt(i) == '(')
{
estado=0;
cad.charAt(i) = 'x';
i++;
}
else if(cad.charAt(i) == 'x')
{
estado=1;
cad.charAt(i) = 'x';
i--;
}
else {
termina=true;
exito=false;
}
case 2: if(cad.charAt(i) == 'x')
{
estado=2;
cad.charAt(i) = 'x';
i--;
}
else if(cad.charAt(i) == 'E')
{
termina=true;
exito=true;
}
else{
termina=true;
exito=false;
}
break;
}
}

if(exito)
{
cajaSal.setText("Parentesis correctos");
}
else
{
cajaSal.setText("Parentesis Incorrectos");
}
}

String aumenta(String c) {
for(int i=0;i<5;i++)
c="E"+c+"E";
return c;
}
}
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

RE:maquinas de turing

Publicado por James (207 intervenciones) el 04/12/2008 15:55:03
No se puede usar charAt de esa forma JAVA posee muchos metodos de tratamiento de String's, que son arte de la misma clase String , por ejemplo para sabersi la cadena contiene el caracter que deseas puedes usar "contains" si quieres recuperara el indice puedes usar indexOf, y poara reeemplazar usarias replace o replaceFisrt bueno mas valen un parde lineas de codigo que mil palabras

String s = "ejemplo de reemplazo";
System.out.println("cadena original: " + s);
if(s.contains("e")){
System.out.println("Caracter encontrado, reemplzando...");
s = s.replace('e', '*');
}
System.out.println("cadena final: " + s);

en este codigo basicamente verifico si la cadena contiene el caracter deseado, si es asi lo mando a reemplazar por *, en tuca so haria algo parecido pero dependiendo del caso que evaluas espero te sirva de algo, Suerte.
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