elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Array Bidimensional de objetos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Array Bidimensional de objetos  (Leído 3,876 veces)
Lind L. Tailor

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Array Bidimensional de objetos
« Respuesta #10 en: 19 Abril 2015, 22:06 »

Efectivamente, por favor, coloca el código con tus adecuaciones para ver el error, sin embargo, por lo que comentas posiblemente tienes esa línea de código en un bucle y si se repite el ID posiblemente es que no estas creando un nuevo objeto cuando insertas un nuevo registro.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos. Suerte!


En línea

Nafko

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Array Bidimensional de objetos
« Respuesta #11 en: 20 Abril 2015, 07:55 »

Seria algo así pero ahora el problema esta en el ingreso de el 2do cliente al hacer la muestra por pantalla me tira error de los get y set algo esta mal pero no se que desde ya gracias

Código:
import java.io.*;
import java.util.*;

public class Test {
  
    
public static void main(String[] args) throws IOException {
Random  rnd = new Random();
int id = rnd.nextInt(3)+1;
int size = llenarHashMap().size();
int total = 0;
System.out.println("Id: " + llenarHashMap().get(id).getId() +
" Nombre: " + llenarHashMap().get(id).getNombre() +
" RUT: " + llenarHashMap().get(id).getRUT() +
" Tipo de Sala: " + llenarHashMap().get(id).getSala()+
                                                        "Total"+llenarHashMap().get(id).getTotal());
 
for(int i = 1; i <= size; i++){
total += llenarHashMap().get(i).getId();
}
 
System.out.println("TOTAL: " + total);
}
 
public static HashMap<Integer,Conn> llenarHashMap() throws IOException{
            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            
HashMap<Integer,Conn> map = new LinkedHashMap<Integer,Conn>();
Conn a = new Conn();
a.setId(1);
                System.out.println("Nombre de Cliente: ");
                String nom=bf.readLine();
a.setNombre(nom);
                System.out.println("RUT: ");
                String rut=bf.readLine();
                a.setRUT(rut);
                System.out.println("Tipo de sala: ");
                String TipoSala=bf.readLine();
                a.setSala(TipoSala);
                System.out.println("Ingresar Total del valor: ");
                int total=Integer.parseInt(bf.readLine());
                a.setTotal(total);
map.put(a.getId(),a);
 

 
return map;
}
}

y Constructor

Código:
public class Conn {
private int id;
private String Nombre;
private String RUT;
private String Sala;
        private int total;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public String getRUT() {
        return RUT;
    }

    public void setRUT(String RUT) {
        this.RUT = RUT;
    }

    public String getSala() {
        return Sala;
    }

    public void setSala(String Sala) {
        this.Sala = Sala;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }
 

}


« Última modificación: 20 Abril 2015, 08:02 por Nafko » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Array Bidimensional de objetos
« Respuesta #12 en: 20 Abril 2015, 21:19 »

Veo mucha redundancia en tu código, llamas demasiadas veces a llenarHashMap() cuando debe llenarse solo una vez.

Código
  1. Map<Integer, Conn> conns = llenarHashMap();
  2. printInfoOf(conns.get(generateInt(1, 3);
  3.  
  4. public static Integer generateInt(int minimun, int limit) {
  5.    Random random = new Random(System.nanoTime());
  6.    return minimun + random.nextInt(limit);
  7. }
  8. public static void printInfoOf(Conn conn) {
  9.    System.out.println("ID: "+conn.getId()+"\nNombre: "+conn.getNombre()+
  10.        "\nRUT: "+conn.getRUT()+"\nTipo de sala: "+conn.getSala()+"\nTotal: "+conn.getTotal());
  11. }

Cada llamada a HashMap está ingresando nuevos datos. Debes de pensar en el flujo del algoritmo:

1) Ingreso los objetos Conn (ni idea de que trate de decir).
2) Generar un ID aleatorio.
3) Obtenerlo del Map.
4) Imprimir su información.

El punto 1, me lleva también a recomendarte que te leas el tema "Buenas prácticas en Java", que está pegado en éste mismo foro, para que aprendas que:

  • Las variables en Java utilizan notación camelCase. Ej. nroRut.

Entre muchas otras cosas que todo programador Java debe saber.


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.834


The Hacktivism is not a crime


Ver Perfil WWW
Re: Array Bidimensional de objetos
« Respuesta #13 en: 20 Abril 2015, 22:24 »

En java puro y duro también uso los HashMap, pero en el SDK de Android (en java) utilizo JSONObject porque es mas fácil e intuitivo para trabajar ya que no necesitas definir los tipos de valores como en HashMap<T, T>. No se si sea tu caso.
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Array Bidimensional de objetos
« Respuesta #14 en: 20 Abril 2015, 23:09 »

JsonObject del paquete javax.json, se usa más cuando se trabaja con WebSockets y Decoders/Encoders. En su caso, se haría:

Código
  1. JsonObject value = Json.createObjectBuilder()
  2.     .add("id", VALOR)
  3.     .add("nombres", "VALOR")
  4.     .add("rut", "VALOR")
  5.     .add("sala", "VALOR")
  6.     .add("total", VALOR)
  7.     .build();

Si lo ves más práctico, pues usalo en lugar de HashMap. Yo seguiría usando HashMap. Si quieres una llave multitipo, puedes usar <Object, Object>, que ya sería muy genérico y tendría que hacerse muchos casting, por lo que me inclinaría a usar JSON como dijo WHK.


Saludos.
« Última modificación: 20 Abril 2015, 23:11 por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.834


The Hacktivism is not a crime


Ver Perfil WWW
Re: Array Bidimensional de objetos
« Respuesta #15 en: 21 Abril 2015, 14:38 »

A demás de ser mas cómodo el objeto JSON tiene muchas mas propiedades que un HashMap como por ejemplo la posibilidad de ser llevado a otras capas o lenguajes tales como javascript, solicitudes HTTP/POST directas sin tener que utilizar serializaciones ya que jsonobject lo hace de manera nativa, puedes pasarlo como valor serializable como transporte de datos entre capas de modelos y controladores de manera mas efectiva (como por ejemplo la posibilidad de retornar múltiples valores en ves de un solo tipo por función, como en mi caso cuando devuelvo un objeto json con el estado de la solicitud, valores y el id autoincrementable).

Un HashMap a pesar de que también puedes manejar arrays multidimensionales con llaves de tipos no puede ser transportado ni manipulado con tanta facilidad como un objeto json.

En mi caso en un proyecto php las funciones retornan un objeto de tipo array (ya que en php las llaves de los arrays pueden ser objetos como strings) el cual contiene el estado, namespace de error, texto de error y datos solicitados, de esa manera no necesito utilizar variables locales ni almacenar un stack de estados como se hace generalmente y uso una clase de errores para completar el id de estado, namespace y texto el cual puede contener un array de errores como por ejemplo el controlador del login de un acceso a un portal, pueden haber errores como por ejemplo que el campo nick falta o el campo nick y password falta o que le faltó la captcha, etc... entonces encapsulo todo en un ñunico objeto y lo retorno y lo proceso y lo documento dentro de la misma función.

En Java no hago esto xD porque java es mas estructurado pero si cuando necesito crear objetos serializables en el modelo utilizo mucho los valores en jsonobject para poder sincronizarlos con el servidor web desde una aplicación móvil ya que solamente debo serializarlos de manera nativa y enviar y recibir. Afortunadamente el objeto json está disponible en casi todo lenguaje de programación conocido tales como java, javascript, php, .net, etc por lo cual su utilización para mi es muy cómoda cuando se trata de crear un sistema que se deba mantener comunicado con otras capas u otros servicios y te sirve para acostumbrarte a su uso cuando necesites utilizar apis en internet como google maps, cuentas de gmail, apple, twitter, amazon aws, etc.
En línea

WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.834


The Hacktivism is not a crime


Ver Perfil WWW
Re: Array Bidimensional de objetos
« Respuesta #16 en: 21 Abril 2015, 14:42 »

Seria algo así pero ahora el problema esta en el ingreso de el 2do cliente al hacer la muestra por pantalla me tira error de los get y set algo esta mal pero no se que desde ya gracias

Copia y pega acá el mensaje de error para tener una referencia mas clara.
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Array Bidimensional de objetos
« Respuesta #17 en: 21 Abril 2015, 14:56 »

No importa qué es más cómodo, si no lo que mejor se adapte al proyecto. Yo cuando trabajo, siempre uso JSON o JAXB/Jackson cuando quiero transportar entidades y ésto es mucho más cómodo. Envías una entidad de microservicio a microservicio o mediante peticiones y ésta llega íntegra al destino, ya no necesitas estar convirtiendo de JSON a entidad. Un HashMap también es serializable por cierto.

Hay que usar siempre lo que mejor se adapte a las necesidades. Para casos sencillos como éste, no le veo mucho sentido usar JSON ya que no se va a trabajar con peticiones, si no que será estático, se está simulando una BBDD.

Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.834


The Hacktivism is not a crime


Ver Perfil WWW
Re: Array Bidimensional de objetos
« Respuesta #18 en: 21 Abril 2015, 14:59 »

Acabo de compilar tu código y Gus invitado tiene razón, intentas pedir datos en una función y replicas en otras y luego sumas los ids no se para que, está bien raro el código. Podrías explicarnos de que se trata como para poder ayudar a corregirlo?
En línea

WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.834


The Hacktivism is not a crime


Ver Perfil WWW
Re: Array Bidimensional de objetos
« Respuesta #19 en: 21 Abril 2015, 15:07 »

No importa qué es más cómodo, si no lo que mejor se adapte al proyecto. Yo cuando trabajo, siempre uso JSON o JAXB/Jackson cuando quiero transportar entidades y ésto es mucho más cómodo. Envías una entidad de microservicio a microservicio o mediante peticiones y ésta llega íntegra al destino, ya no necesitas estar convirtiendo de JSON a entidad. Un HashMap también es serializable por cierto.

Hay que usar siempre lo que mejor se adapte a las necesidades. Para casos sencillos como éste, no le veo mucho sentido usar JSON ya que no se va a trabajar con peticiones, si no que será estático, se está simulando una BBDD.

Saludos.

No, no está simulando una db, ese tipo de clases se llaman parcelables o serialización (método get, set) y sirven para ser transportados de manera nativa entre dos aplicaciones o capas, mantener orden y estándard:
http://www.discoduroderoer.es/metodos-get-y-set-en-java/

En .net el método { get; set; } se realiza de manera automática y ya viene con definiciones por defecto salvo que hagas get y set personalizados (útiles cuando necesitas realizar calculos cada ves que se guarda u obtiene un dato como por ejemplo obtener el sexo de una persona cuando solo tienes el valor booleano si es hombre o no o valor nulo).

El tema principal es que no entiendo la lógica del proyecto.
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Array bidimensional en pascal.
Ejercicios
sv51 4 10,979 Último mensaje 21 Junio 2008, 22:30
por sv51
REllenar array bidimensional
Programación C/C++
sarape 1 3,297 Último mensaje 14 Julio 2008, 18:01
por Lauta
Ordenar array bidimensional
Java
KaRaLLo 5 11,513 Último mensaje 1 Abril 2013, 02:36
por seraff
Ayuda con Array bidimensional
Programación General
Javaniano 0 713 Último mensaje 8 Diciembre 2012, 13:38
por Javaniano
[Ayuda] Problema con Array Bidimensional « 1 2 »
Java
heidozanzo 15 2,889 Último mensaje 9 Noviembre 2015, 15:46
por 0xFer
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines