Ayuda con programa de java...

Iniciado por Dulcrash, 7 Noviembre 2008, 21:35 PM

0 Miembros y 1 Visitante están viendo este tema.

Dulcrash

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 (JAVA) [Seleccionar]


/*Programa en Java que hace uso de pilas.
*En este programa se le ingresa una palabra,separa las letras
*y las imprime de una en una de abaja hacia arriba:
*Ejemplo: Si se escribe la palabra JAVA.
*La impresión sera:
*  A
*  V
*  A
*  J
*/

import java.io.*;   
import java.util.Scanner;   
public class PilaCadena
{   
       public static void main( String args[] ){   
       Scanner leer = new Scanner(System.in);   
       operapilaschar Obj = new operapilaschar();   
 
       String cadena;   
       char ch;   
 
       System.out.println( "Escribe texto:" );   
       cadena = leer.next();   
 
       for(int i=0;i<cadena.length();i++)
       {   
        ch = cadena.charAt(i);   
        Obj.push(ch);   
        }   
 
        for(int i=0; i<cadena.length(); i++)
        {   
            Obj.pop();   
            System.out.println(Obj.dret);   
            }   
       }   



// hace uso de los metodos de la sig clase
import java.io.*; 

class operapilaschar   
 
  {   
 
    public static char dret;   
 
    public static int max;   
 
    public static char pila[];   
 
    public static int tope = -1;   
 
    public operapilaschar()   
 
      {   
 
    max=20;   
 
    pila=new char [max];   
 
      }   
 
    public operapilaschar(int n)   
 
      {   
 
     max=n-1;   
 
     pila = new char [max];   
 
      }           
 
public static boolean pila_Llena(int tope,int max)   
 
  {   
 
     boolean llena;   
 
     if (tope==max)   
 
          llena=true;   
 
        else 
 
          llena=false;   
 
     return llena;   
 
  }           
 
public static boolean pila_Vacia(int tope)   
 
  {   
 
     boolean vacia;   
 
     if (tope == -1)   
 
        vacia=true;   
 
       else 
 
        vacia=false;   
 
     return vacia;   
 
  }   
 
public static void push(char dato)   
 
{   
 
    if(pila_Llena(tope,max))   
 
      System.out.println("!Cuidado!, Desbordamiento!!!!!");   
 
       else 
 
         {   
 
            tope++;   
 
            pila[tope]=dato;// pone el nuevo dato en la pila   
 
         }   
 
}             
 
public static void pop()   
 
{   
 
    if (pila_Vacia(tope))   
 
       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");   
 
    else {   
 
          dret=pila[tope];   
 
          tope--;   
 
          }// actualiza tope y se elimina elemento en el tope   
 
}   
 
public static boolean compara(int dret,int ch)   
 
{   
 
    if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')   
 
      return true;   
 
      else   
 
      return false;   
 
}   
 
public static void estado()   
 
  {   
 
    int i;   
 
    System.out.println(" El estado de la pila es : ");   
 
    System.out.println(" --------------------------");   
 
    for(i=0;i<=tope;i++)   
 
     {   
 
        System.out.println("pila["+i+"] : "+pila[i]);   
 
     }   
 
  }   
}


Casidiablo

En este momento no tengo un compilador cerca... podrías poner el error que te sale?

Dulcrash

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 (JAVA) [Seleccionar]

/*Programa en Java que hace uso de pilas.
*En este programa se le ingresa una palabra,separa las letras
*y las imprime de una en una de abaja hacia arriba:
*Ejemplo: Si se escribe la palabra JAVA.
*La impresión sera:
*  A
*  V
*  A
*  J
*/

import java.io.*;   
import java.util.Scanner;   
public class PilaCadena
{   
       public static void main( String args[] ){   
       Scanner leer = new Scanner(System.in);   
       operapilaschar Obj = new operapilaschar();   
 
       String cadena;   
       char ch;   
 
       System.out.println( "Escribe texto:" );   
       cadena = leer.next();   
 
       for(int i=0;i<cadena.length();i++) // aqui me dice que  ')' expected  y tambien ';' expected
       {   
        ch = cadena.charAt(i);   
        Obj.push(ch);   
        }   
 
        for(int i=0; i<cadena.length(); i++)
        {   
            Obj.pop();   
            System.out.println(Obj.dret);   
            }   
       }   


// hace uso de los metodos de la sig clase

import java.io.*;  // aqui marca 'class' or 'interface' expected

class operapilaschar   
 
  {   
 
    public static char dret;   
 
    public static int max;   
 
    public static char pila[];   
 
    public static int tope = -1;   
 
    public operapilaschar()   
 
      {   
 
    max=20;   
 
    pila=new char [max];   
 
      }   
 
    public operapilaschar(int n)   
 
      {   
 
     max=n-1;   
 
     pila = new char [max];   
 
      }           
 
public static boolean pila_Llena(int tope,int max)   
 
  {   
 
     boolean llena;   
 
     if (tope==max)   
 
          llena=true;   
 
        else 
 
          llena=false;   
 
     return llena;   
 
  }           
 
public static boolean pila_Vacia(int tope)   
 
  {   
 
     boolean vacia;   
 
     if (tope == -1)   
 
        vacia=true;   
 
       else 
 
        vacia=false;   
 
     return vacia;   
 
  }   
 
public static void push(char dato)   
 
{   
 
    if(pila_Llena(tope,max))   
 
      System.out.println("!Cuidado!, Desbordamiento!!!!!");   
 
       else 
 
         {   
 
            tope++;   
 
            pila[tope]=dato;// pone el nuevo dato en la pila   
 
         }   
 
}             
 
public static void pop()   
 
{   
 
    if (pila_Vacia(tope))   
 
       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");   
 
    else {   
 
          dret=pila[tope];   
 
          tope--;   
 
          }// actualiza tope y se elimina elemento en el tope   
 
}   
 
public static boolean compara(int dret,int ch)   
 
{   
  if (dret=='(' && ch==')' || dret=='{' && ch=='}' || dret=='[' && ch==']')  // ')' expected
                                                                                            // illegal start expression
                                                                                            // not a statement
      return true;   
 
      else    // 'else' without 'if'
 
      return false;   
 
}   
 
public static void estado()   
 
  {   
 
    int i;   
 
    System.out.println(" El estado de la pila es : ");   
 
    System.out.println(" --------------------------");   
  for(i=0;i<=tope;i++)   // illegal start of expression, expected ')' , expected ';'
 
     {   
 
        System.out.println("pila["+i+"] : "+pila[i]);   
 
     }   
 
  }   
}






juancho77

#3
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 (java) [Seleccionar]
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 (java) [Seleccionar]
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!

juancho77

Por que la palabra "E-xpression" es convertida por el Foro automaticamente y arbitrariamente a epresionje??   :huh:

Dulcrash

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:

Dulcrash

logre corregir varios errores pero aun me kedan estos..ojala me puedan ayudar..ya solo son 4...


Código (JAVA) [Seleccionar]


/*Programa en Java que hace uso de pilas.
*En este programa se le ingresa una palabra,separa las letras
*y las imprime de una en una de abaja hacia arriba:
*Ejemplo: Si se escribe la palabra JAVA.
*La impresión sera:
*  A
*  V
*  A
*  J
*/

import java.io.*;   
import java.util.Scanner;   
public class PilaCadena1
{   
       public static void main( String args[] )
       {   
       Scanner leer = new Scanner(System.in);   
       operapilaschar Obj = new operapilaschar();   
 
       String cadena;   
       char ch;   
 
       System.out.println( "Escribe texto:" );   
       cadena = leer.next();   
 
       for(int i=0; i&lt; cadena.length(); i++) // expected ')' y expected ';' <--- linea 27
              {   
        ch = cadena.charAt(i);   
        Obj.push(ch);   
        }   
 
        for(int i=0; i&lt;cadena.length(); i++)
        {   
            Obj.pop();   
            System.out.println(Obj.dret);   
            }   
       }   


// hace uso de los metodos de la sig clase



class operapilaschar   
 
  {   
 
    public static char dret;   
 
    public static int max;   
 
    public static char pila[];   
 
    public static int tope = -1;   
 
    public operapilaschar()   
 
      {   
 
    max=20;   
 
    pila=new char [max];   
 
      }   
 
    public operapilaschar(int n)   
 
      {   
 
     max=n-1;   
 
     pila = new char [max];   
 
      }           
 
public static boolean pila_Llena(int tope,int max)   
 
  {   
 
     boolean llena;   
 
     if (tope==max)   
 
          llena=true;   
 
        else 
 
          llena=false;   
 
     return llena;   
 
  }           
 
public static boolean pila_Vacia(int tope)   
 
  {   
 
     boolean vacia;   
 
     if (tope == -1)   
 
        vacia=true;   
 
       else 
 
        vacia=false;   
 
     return vacia;   
 
  }   
 
public static void push(char dato)   
 
{   
 
    if(pila_Llena(tope,max))   
 
      System.out.println("!Cuidado!, Desbordamiento!!!!!");   
 
       else 
 
         {   
 
            tope++;   
 
            pila[tope]=dato;// pone el nuevo dato en la pila   
 
         }   
 
}             
 
public static void pop()   
 
{   
 
    if (pila_Vacia(tope))   
 
       System.out.println("!Cuidado!, Subdesbordamiento!!!!!");   
 
    else {   
 
          dret=pila[tope];   
 
          tope--;   
 
          }// actualiza tope y se elimina elemento en el tope   
 
}   

 
public static boolean compara(int dret,int ch)   
 
{   
  if (dret=="(" && ch==")" + dret=="{" && ch=="}" + dret=="[" && ch=="]") 
     
      return true;   
 
      else   
      {
 
      return false;   
 
}   

 
public static void estado( )   // illegal start of expression <--- linea 167
 
  {   
 
      int i;
 
    System.out.println(" El estado de la pila es : ");   
 
    System.out.println(" --------------------------"); 
     
  for(i=0; i&lt; =tope;i++)   
 
     {   
 
        System.out.println("pila ["+ i +"] : " + pila[i])
 
     }    //  expected ';' <------- linea 183



juancho77

A ver si le pones algo de ganas amigo.
Código (java) [Seleccionar]
{   

        System.out.println("pila ["+ i +"] : " + pila[i])

     }


Te falta cerrar con punto y coma (;) !

Código (java) [Seleccionar]
public static void estado( )   // illegal start of epresionje <--- linea 167

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

Animo!