Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jscrip

#1
Cita de: ~ Yoya ~ en  8 Julio 2013, 22:37 PM
Si pasaste todo a String y lo ordenas utilizando Collections.sort($ArrayListDeString) entonce no tiene porque dar error.

Habras hecho algo mal o tenias algo mal, te recomiendo que utilices el Debugger para que sepas en donde y que momento el programa explota.
Tenía el ArrayList object, tuve que especificar que es string. Gracias por la ayuda.
#2
Cita de: ~ Yoya ~ en  8 Julio 2013, 03:12 AM
No puedes organizar datos que no son mutuamente comparable, osea no puedes ordenar objetos de diferente tipos.
Lo que puedes hacer es pasar los Integer a String, así tendrás solo datos del mismo tipo, en este caso String.

Luego si quieres puedes utilizar el metodo reverse de la clase Collections, para tener los datos descendente. La otra opción es utilizar interfaz Comparactor.

Saludos.

Gracias por responder, lo pasé a String todo y me sale este error: Exception in thread "main" java.lang.ClassCastException: Project_EMPRESA.Empresa cannot be cast to java.lang.Comparable
   at java.util.Collections.sort(Collections.java:159)
   at Project_EMPRESA.Opcion.ingreso(Opcion.java:53)
   at Project_EMPRESA.Principal.main(Principal.java:38)
Java Result: 1
#3
Hola, quiero ordenar los elementos de un ArrayList en forma ascendente o descendente, pero me sale error. Los elementos del ArrayList son String e Int:
public class Consulta {
 
   public static void ingreso(ArrayList registros){
       int op2, op1;
       String id = Ingreso.getString(": ");
       String name = Ingreso.getString("Nombre: ");
       int cel = Ingreso.getInt("Cell: ");
       String descripcion = Ingreso.getString("Descripcion: ");
       Empresa p = new Empresa(id, name, cell, descripcion);
       p.imprimirInfoEmpresa();
       registros.add(p);
   }
   
   public static void consulta(ArrayList registros){
      ||||||||||||||||||
           case 1:
               String cedula = Ingreso.getString("Ingrese el id:");
               for(int i=0; i<registros.size();i++){
                   Empresa p = (Empresa)registros.get(i);
                       Collections.sort(registros); //Me sale error Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
  symbol:   variable cel

                       
                     
}
||||||||||||

Gracias de antemano por la ayuda.
#4
Java / Re: Ayuda con constructores y metodos.
6 Julio 2013, 03:53 AM
Cita de: ~ Yoya ~ en  3 Julio 2013, 16:05 PM
Código (java) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad().contains(edad)) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();


getEdad() retorna un int y por lo tanto es un dato primitivo y no puedes tratarlo como un objeto como lo haces. Y suponiendo que retorne un Integer (wrapper class) el método contains no existe.

Con esto bastaria:
Código (java,2) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad() == edad) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();


Vaya, funcionó. Muchas gracias por la ayuda.
#5
Java / Ayuda con constructores y metodos.
3 Julio 2013, 04:27 AM
Hola, tengo un problema con una clase en la cual hago una consulta de los datos contenidos en un arreglo: "int cannot be deferenced"

Esta es la clase con los constructores:

Código (java) [Seleccionar]
public class Persona {

   private String cedula;
   private String nombres;
   private String apellidos;
   private int edad;

   public Persona(String cedula, String nombres, String apellidos, int edad){
       this.cedula=cedula;
       this.nombres=nombres;
       this.apellidos=apellidos;
       this.edad=edad;
   }

   public Persona(){

   }

   /**
    * @return the cedula
    */
   public String getCedula() {
       return cedula;
   }

   /**
    * @param cedula the cedula to set
    */
   public void setCedula(String cedula) {
       this.cedula = cedula;
   }

   /**
    * @return the nombres
    */
   public String getNombres() {
       return nombres;
   }

   /**
    * @param nombres the nombres to set
    */
   public void setNombres(String nombres) {
       this.nombres = nombres;
   }

   /**
    * @return the apellidos
    */
   public String getApellidos() {
       return apellidos;
   }

   /**
    * @param apellidos the apellidos to set
    */
   public void setApellidos(String apellidos) {
       this.apellidos = apellidos;
   }

   /**
    * @return the edad
    */
   public int getEdad() {
       return edad;
   }

   /**
    * @param edad the edad to set
    */
   public void setEdad(int edad) {
       this.edad = edad;
   }

   public void imprimirInfoPersona(){
       System.out.println("Cedula: "+cedula);
       System.out.println("Nombres: "+nombres);
       System.out.println("Apellidos: "+apellidos);
       System.out.println("Edad: "+edad);
   }
}

Y esta es la clase de consultar:

//Clase que imprime un menu para consultar datos
public static void consulta(ArrayList registros){
       int op;
       do{                          
        do{
           Menu.imprimirMenuConsulta();        
           op = Ingreso.getInt("Ingrese la opción deseada:");
           if(op<0 || op>5)
               System.out.println("La opción ingresada es incorrecta");
       }while(op<0 || op>5);
       
       switch(op){
           case 1:
               String cedula = Ingreso.getString("Ingrese la cédula:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getCedula().contains(cedula))
                       p.imprimirInfoPersona();
               }
               
               break;
           case 2:
               String nombre = Ingreso.getString("Ingrese el nombre:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getNombres().toUpperCase().contains(nombre.toUpperCase()))
                       p.imprimirInfoPersona();
               }
               break;
           case 3:
               String apellido = Ingreso.getString("Ingrese el apellido:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getApellidos().toUpperCase().contains(apellido.toUpperCase()))
                       p.imprimirInfoPersona();
               }
               break;
           case 4:
               int edad = Ingreso.getInt("Ingrese la edad:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getEdad().contains(edad)) [b]//Aquí me manda el error int cannot be deferenced[/b]
                       p.imprimirInfoPersona();
               }
               break;    
           case 5:
                   for(int i=0; i<registros.size(); i++){
                       Persona p = (Persona)registros.get(i);
                       p.imprimirInfoPersona();                    
                   }
               break;    
           case 0:
               System.out.println("Regresando al menú principal...");
               break;        
       }
     }while(op!=0);  
   }


¿Saben cual es el error?
Gracias de antemano por su ayuda.
#6
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 18:40 PM
Cita de: naderST en  4 Febrero 2013, 18:21 PM
Me parece que el formato que le estás dando a tu archivo no es el correcto, prueba con esto:


void opcion1()
{
   FILE *p;
   p = fopen("accesobanco.txt", "w");
   fprintf(p, "%s, %s","useras34", "ae78\n");
   fprintf(p, "%s, %s","\nuseras32", "ui99\n");
   fprintf(p, "%s, %s","\nuseras45", "eo76\n");
   fprintf(p, "%s, %s","\nuserasg6", "ie44\n\n");
   fclose ( p );
}

Lo volví a probar en linux y me funcionó, si lo voy ejecutando por pasos se llena de basura en visual studio.
fgets( S1, sizeof(S1), stdin );

De todos modos muchas gracias.
Saludos.
#7
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 17:38 PM
Esta funcion crea el archivo:

void opcion1()
{
   FILE *p;
   p = fopen("accesobanco.txt", "w++");
   fprintf(p, "%s, %s","useras34", "ae78");
   fprintf(p, "%s, %s","\nuseras32", "ui99");
   fprintf(p, "%s, %s","\nuseras45", "eo76");
   fprintf(p, "%s, %s","\nuserasg6", "ie44");
   fclose ( p );
}
#8
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 17:30 PM
Cita de: rir3760 en  4 Febrero 2013, 17:16 PM
Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña.

Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin).

Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo.

Un saludo
El contenido del erchivo es de esta manera:

user, password
user, password
user, password
user, password
#9
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 17:29 PM
Cita de: 0xDani en  4 Febrero 2013, 17:26 PM
Si el archivo no esta creado cuando ejecutas el programa, tengo entendido que fopen() no lo crea si le pasas "r" como modo de apertura.

Saludos.
El archivo se crea con otra funcion, en el menu del programa se debe crear el archivo con una funcion sino no entra a la funcion de comprobacion, eso esta validado
#10
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 16:44 PM
Cita de: naderST en  4 Febrero 2013, 16:06 PM
Al observar tu código me di cuenta que haces fflush al flujo de entrada, pásate por los siguientes enlaces:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Documentación de fflush

http://linux.die.net/man/3/fflush
De hecho el programa lo hice en linux, al pasarlo a windows le puse el fflush, de todas manera si lo quito o borro el buffer con while(getchar()!='\n'); el programa sigue sin funcionar.