Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Dulcrash en 7 Noviembre 2008, 21:35 pm



Título: Ayuda con programa de java...
Publicado por: Dulcrash en 7 Noviembre 2008, 21:35 pm
Hola a todos!*
ps soy nueva aqui en el foro y les agradecere mucho si pudieran ayudarme..
mi problema es el siguiente:
mi profesor me encargo un programa en el cual por medio de pilas se introdujera una cadena cualquiera y k como resultado me imprimiera la misma pero a la inversa
Ejemplo: Si se escribe la palabra JAVA.
 La impresión sera:
   A
   V
   A
   J

Ya investigue y trate de resolverlo..pero al compilar el codigo me marca error y pues necesito de su ayuda para encontrar en que estoy mal..llevo como 3 dias tratando de resolverlo y no he podido...
de antemano gracias!*

Código
  1.  
  2. /*Programa en Java que hace uso de pilas.
  3.  *En este programa se le ingresa una palabra,separa las letras
  4.  *y las imprime de una en una de abaja hacia arriba:
  5.  *Ejemplo: Si se escribe la palabra JAVA.
  6.  *La impresión sera:
  7.  *  A
  8.  *  V
  9.  *  A
  10.  *  J
  11. */
  12.  
  13. import java.io.*;  
  14. import java.util.Scanner;  
  15. public class PilaCadena
  16. {  
  17.       public static void main( String args[] ){  
  18.       Scanner leer = new Scanner(System.in);  
  19.       operapilaschar Obj = new operapilaschar();  
  20.  
  21.       String cadena;  
  22.       char ch;  
  23.  
  24.       System.out.println( "Escribe texto:" );  
  25.       cadena = leer.next();  
  26.  
  27.       for(int i=0;i<cadena.length();i++)
  28.       {  
  29.        ch = cadena.charAt(i);  
  30.        Obj.push(ch);  
  31.        }  
  32.  
  33.        for(int i=0; i<cadena.length(); i++)
  34.        {  
  35.            Obj.pop();  
  36.            System.out.println(Obj.dret);  
  37.            }  
  38.       }  
  39. }  
  40.  
  41.  
  42. // hace uso de los metodos de la sig clase
  43. import java.io.*;  
  44.  
  45. class operapilaschar  
  46.  
  47.  {  
  48.  
  49.    public static char dret;  
  50.  
  51.    public static int max;  
  52.  
  53.    public static char pila[];  
  54.  
  55.    public static int tope = -1;  
  56.  
  57.    public operapilaschar()  
  58.  
  59.      {  
  60.  
  61.    max=20;  
  62.  
  63.    pila=new char [max];  
  64.  
  65.      }  
  66.  
  67.    public operapilaschar(int n)  
  68.  
  69.      {    
  70.  
  71.     max=n-1;  
  72.  
  73.     pila = new char [max];  
  74.  
  75.      }            
  76.  
  77. public static boolean pila_Llena(int tope,int max)  
  78.  
  79.  {  
  80.  
  81.     boolean llena;  
  82.  
  83.     if (tope==max)  
  84.  
  85.          llena=true;  
  86.  
  87.        else  
  88.  
  89.          llena=false;  
  90.  
  91.     return llena;  
  92.  
  93.  }            
  94.  
  95. public static boolean pila_Vacia(int tope)  
  96.  
  97.  {  
  98.  
  99.     boolean vacia;  
  100.  
  101.     if (tope == -1)  
  102.  
  103.        vacia=true;  
  104.  
  105.       else  
  106.  
  107.        vacia=false;  
  108.  
  109.     return vacia;  
  110.  
  111.  }  
  112.  
  113. public static void push(char dato)  
  114.  
  115. {  
  116.  
  117.    if(pila_Llena(tope,max))  
  118.  
  119.      System.out.println("!Cuidado!, Desbordamiento!!!!!");  
  120.  
  121.       else  
  122.  
  123.         {  
  124.  
  125.            tope++;  
  126.  
  127.            pila[tope]=dato;// pone el nuevo dato en la pila  
  128.  
  129.         }  
  130.  
  131. }            
  132.  
  133. public static void pop()  
  134.  
  135. {  
  136.  
  137.    if (pila_Vacia(tope))  
  138.  
  139.       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");  
  140.  
  141.    else {  
  142.  
  143.          dret=pila[tope];  
  144.  
  145.          tope--;  
  146.  
  147.          }// actualiza tope y se elimina elemento en el tope  
  148.  
  149. }  
  150.  
  151. public static boolean compara(int dret,int ch)  
  152.  
  153. {  
  154.  
  155.    if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')  
  156.  
  157.      return true;  
  158.  
  159.      else    
  160.  
  161.      return false;  
  162.  
  163. }  
  164.  
  165. public static void estado()  
  166.  
  167.  {  
  168.  
  169.    int i;  
  170.  
  171.    System.out.println(" El estado de la pila es : ");  
  172.  
  173.    System.out.println(" --------------------------");  
  174.  
  175.    for(i=0;i<=tope;i++)  
  176.  
  177.     {  
  178.  
  179.        System.out.println("pila["+i+"] : "+pila[i]);  
  180.  
  181.     }  
  182.  
  183.  }  
  184. }
  185.  
  186.  


Título: Re: Ayuda con programa de java...
Publicado por: Casidiablo en 7 Noviembre 2008, 21:52 pm
En este momento no tengo un compilador cerca... podrías poner el error que te sale?


Título: Re: Ayuda con programa de java...
Publicado por: Dulcrash en 7 Noviembre 2008, 22:12 pm
si claro que si...muchas gracias...

perdon..esk son varios... :-[
comente el error que me señala en las respectivas lineas

linea 26
linea 42
linea 153
linea 158
linea 173

Código
  1. /*Programa en Java que hace uso de pilas.
  2.  *En este programa se le ingresa una palabra,separa las letras
  3.  *y las imprime de una en una de abaja hacia arriba:
  4.  *Ejemplo: Si se escribe la palabra JAVA.
  5.  *La impresión sera:
  6.  *  A
  7.  *  V
  8.  *  A
  9.  *  J
  10. */
  11.  
  12. import java.io.*;  
  13. import java.util.Scanner;  
  14. public class PilaCadena
  15. {  
  16.       public static void main( String args[] ){  
  17.       Scanner leer = new Scanner(System.in);  
  18.       operapilaschar Obj = new operapilaschar();  
  19.  
  20.       String cadena;  
  21.       char ch;  
  22.  
  23.       System.out.println( "Escribe texto:" );  
  24.       cadena = leer.next();  
  25.  
  26.       for(int i=0;i<cadena.length();i++) // aqui me dice que  ')' expected  y tambien ';' expected
  27.       {  
  28.        ch = cadena.charAt(i);  
  29.        Obj.push(ch);  
  30.        }  
  31.  
  32.        for(int i=0; i<cadena.length(); i++)
  33.        {  
  34.            Obj.pop();  
  35.            System.out.println(Obj.dret);  
  36.            }  
  37.       }  
  38. }  
  39.  
  40. // hace uso de los metodos de la sig clase
  41.  
  42. import java.io.*;  // aqui marca 'class' or 'interface' expected
  43.  
  44. class operapilaschar  
  45.  
  46.  {  
  47.  
  48.    public static char dret;  
  49.  
  50.    public static int max;  
  51.  
  52.    public static char pila[];  
  53.  
  54.    public static int tope = -1;  
  55.  
  56.    public operapilaschar()  
  57.  
  58.      {  
  59.  
  60.    max=20;  
  61.  
  62.    pila=new char [max];  
  63.  
  64.      }  
  65.  
  66.    public operapilaschar(int n)  
  67.  
  68.      {    
  69.  
  70.     max=n-1;  
  71.  
  72.     pila = new char [max];  
  73.  
  74.      }            
  75.  
  76. public static boolean pila_Llena(int tope,int max)  
  77.  
  78.  {  
  79.  
  80.     boolean llena;  
  81.  
  82.     if (tope==max)  
  83.  
  84.          llena=true;  
  85.  
  86.        else  
  87.  
  88.          llena=false;  
  89.  
  90.     return llena;  
  91.  
  92.  }            
  93.  
  94. public static boolean pila_Vacia(int tope)  
  95.  
  96.  {  
  97.  
  98.     boolean vacia;  
  99.  
  100.     if (tope == -1)  
  101.  
  102.        vacia=true;  
  103.  
  104.       else  
  105.  
  106.        vacia=false;  
  107.  
  108.     return vacia;  
  109.  
  110.  }  
  111.  
  112. public static void push(char dato)  
  113.  
  114. {  
  115.  
  116.    if(pila_Llena(tope,max))  
  117.  
  118.      System.out.println("!Cuidado!, Desbordamiento!!!!!");  
  119.  
  120.       else  
  121.  
  122.         {  
  123.  
  124.            tope++;  
  125.  
  126.            pila[tope]=dato;// pone el nuevo dato en la pila  
  127.  
  128.         }  
  129.  
  130. }            
  131.  
  132. public static void pop()  
  133.  
  134. {  
  135.  
  136.    if (pila_Vacia(tope))  
  137.  
  138.       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");  
  139.  
  140.    else {  
  141.  
  142.          dret=pila[tope];  
  143.  
  144.          tope--;  
  145.  
  146.          }// actualiza tope y se elimina elemento en el tope  
  147.  
  148. }  
  149.  
  150. public static boolean compara(int dret,int ch)  
  151.  
  152. {  
  153.  if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')  // ')' expected
  154.                                                                                            // illegal start expression
  155.                                                                                            // not a statement
  156.      return true;  
  157.  
  158.      else    // 'else' without 'if'
  159.  
  160.      return false;  
  161.  
  162. }  
  163.  
  164. public static void estado()  
  165.  
  166.  {  
  167.  
  168.    int i;  
  169.  
  170.    System.out.println(" El estado de la pila es : ");  
  171.  
  172.    System.out.println(" --------------------------");  
  173.  for(i=0;i<=tope;i++)   // illegal start of expression, expected ')' , expected ';'
  174.  
  175.     {  
  176.  
  177.        System.out.println("pila["+i+"] : "+pila[i]);  
  178.  
  179.     }  
  180.  
  181.  }  
  182. }
  183.  






Título: Re: Ayuda con programa de java...
Publicado por: juancho77 en 7 Noviembre 2008, 22:49 pm
En casi todas las lineas tenes errores de sintaxis. No siento ganas de pasar el codigo a un compilador, pero por lo que pude apreciar:
Código
  1. for(int i=0;i<cadena.length();i++)
Cuando haces el for, esa no es la construccion sintactica correcta para una oracion. Fijate que la condicion de corte no se sabe cual es. Por eso java te tira un Illegal Start of expression o algo asi.

Código
  1. if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')

Para concatenar strings usa el simbolo de concatenacion correcto de java que es " + " . Para indicarle a java que "algo" es un String, ese algo debe ir entre comillas dobles. La comilla simple indica caracter, y java no concatenara varios caracteres, a menos que se lo indiques expresamente con ... comillas dobles.  :D

De vuelta, todos los errores(o casi todos) son sintacticos. Revisa bien las estructuras mas basicas del lenguaje.
Saludos!


Título: Re: Ayuda con programa de java...
Publicado por: juancho77 en 7 Noviembre 2008, 22:54 pm
Por que la palabra "E-xpression" es convertida por el Foro automaticamente y arbitrariamente a epresionje??   :huh:


Título: Re: Ayuda con programa de java...
Publicado por: Dulcrash en 8 Noviembre 2008, 03:12 am
hola juancho77!*

gracias por tu aporte..pero aun no he podido resolver mi problema...hize los cambios que me indicaste y aun así me sigue marcando los mismos errores :huh:


Título: Re: Ayuda con programa de java...
Publicado por: Dulcrash en 8 Noviembre 2008, 03:58 am
logre corregir varios errores pero aun me kedan estos..ojala me puedan ayudar..ya solo son 4...


Código
  1.  
  2. /*Programa en Java que hace uso de pilas.
  3.  *En este programa se le ingresa una palabra,separa las letras
  4.  *y las imprime de una en una de abaja hacia arriba:
  5.  *Ejemplo: Si se escribe la palabra JAVA.
  6.  *La impresión sera:
  7.  *  A
  8.  *  V
  9.  *  A
  10.  *  J
  11. */
  12.  
  13. import java.io.*;  
  14. import java.util.Scanner;  
  15. public class PilaCadena1
  16. {  
  17.       public static void main( String args[] )
  18.       {  
  19.       Scanner leer = new Scanner(System.in);  
  20.       operapilaschar Obj = new operapilaschar();  
  21.  
  22.       String cadena;  
  23.       char ch;  
  24.  
  25.       System.out.println( "Escribe texto:" );  
  26.       cadena = leer.next();  
  27.  
  28.       for(int i=0; i&lt; cadena.length(); i++) // expected ')' y expected ';' <--- linea 27
  29.              {  
  30.        ch = cadena.charAt(i);  
  31.        Obj.push(ch);  
  32.        }  
  33.  
  34.        for(int i=0; i&lt;cadena.length(); i++)
  35.        {  
  36.            Obj.pop();  
  37.            System.out.println(Obj.dret);  
  38.            }  
  39.       }  
  40. }  
  41.  
  42. // hace uso de los metodos de la sig clase
  43.  
  44.  
  45.  
  46. class operapilaschar  
  47.  
  48.  {  
  49.  
  50.    public static char dret;  
  51.  
  52.    public static int max;  
  53.  
  54.    public static char pila[];  
  55.  
  56.    public static int tope = -1;  
  57.  
  58.    public operapilaschar()  
  59.  
  60.      {  
  61.  
  62.    max=20;  
  63.  
  64.    pila=new char [max];  
  65.  
  66.      }  
  67.  
  68.    public operapilaschar(int n)  
  69.  
  70.      {    
  71.  
  72.     max=n-1;  
  73.  
  74.     pila = new char [max];  
  75.  
  76.      }            
  77.  
  78. public static boolean pila_Llena(int tope,int max)  
  79.  
  80.  {  
  81.  
  82.     boolean llena;  
  83.  
  84.     if (tope==max)  
  85.  
  86.          llena=true;  
  87.  
  88.        else  
  89.  
  90.          llena=false;  
  91.  
  92.     return llena;  
  93.  
  94.  }            
  95.  
  96. public static boolean pila_Vacia(int tope)  
  97.  
  98.  {  
  99.  
  100.     boolean vacia;  
  101.  
  102.     if (tope == -1)  
  103.  
  104.        vacia=true;  
  105.  
  106.       else  
  107.  
  108.        vacia=false;  
  109.  
  110.     return vacia;  
  111.  
  112.  }  
  113.  
  114. public static void push(char dato)  
  115.  
  116. {  
  117.  
  118.    if(pila_Llena(tope,max))  
  119.  
  120.      System.out.println("!Cuidado!, Desbordamiento!!!!!");  
  121.  
  122.       else  
  123.  
  124.         {  
  125.  
  126.            tope++;  
  127.  
  128.            pila[tope]=dato;// pone el nuevo dato en la pila  
  129.  
  130.         }  
  131.  
  132. }            
  133.  
  134. public static void pop()  
  135.  
  136. {  
  137.  
  138.    if (pila_Vacia(tope))  
  139.  
  140.       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");  
  141.  
  142.    else {  
  143.  
  144.          dret=pila[tope];  
  145.  
  146.          tope--;  
  147.  
  148.          }// actualiza tope y se elimina elemento en el tope  
  149.  
  150. }  
  151.  
  152.  
  153. public static boolean compara(int dret,int ch)  
  154.  
  155. {  
  156.  if (dret=="(" && ch==")" + dret=="{" && ch=="}" + dret=="[" && ch=="]")  
  157.  
  158.      return true;  
  159.  
  160.      else  
  161.      {
  162.  
  163.      return false;  
  164.  
  165. }  
  166.  
  167.  
  168. public static void estado( )   // illegal start of expression <--- linea 167
  169.  
  170.  {  
  171.  
  172.      int i;
  173.  
  174.    System.out.println(" El estado de la pila es : ");  
  175.  
  176.    System.out.println(" --------------------------");  
  177.  
  178.  for(i=0; i&lt; =tope;i++)  
  179.  
  180.     {  
  181.  
  182.        System.out.println("pila ["+ i +"] : " + pila[i])
  183.  
  184.     }    //  expected ';' <------- linea 183
  185.  
  186.  
  187.  


Título: Re: Ayuda con programa de java...
Publicado por: juancho77 en 8 Noviembre 2008, 09:35 am
A ver si le pones algo de ganas amigo.
Código
  1. {  
  2.  
  3.        System.out.println("pila ["+ i +"] : " + pila[i])
  4.  
  5.     }

Te falta cerrar con punto y coma (;) !

Código
  1. public static void estado( )   // illegal start of epresionje <--- linea 167

Fijate que has cerrado mal el metodo anterior. Faltan corchetes.

Animo!