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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Actualizado] Ayuda código Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Actualizado] Ayuda código Java  (Leído 3,509 veces)
framled

Desconectado Desconectado

Mensajes: 16


Ver Perfil
[Actualizado] Ayuda código Java
« en: 12 Octubre 2011, 23:12 pm »

Hola a todos...
Tengo un gran problema acerca de este código de la clase "Cuadrado" que se detalla mas adelante...

Código
  1. //Clase cuadrado...
  2. public class Cuadrado extends Pieza{
  3. private Bloque[] bloque;
  4. public Cuadrado(double [] center, Color color){
  5.        super(center,color);
  6.        this.bloque = new Bloque[4];
  7.        for(int i = 0 ; i<4 ; i++){
  8.            this.bloque[i] = new Bloque(center,color);
  9.            if(i==1){center[0]++ ;center[1]--;}else{center[1]++;}
  10.        }
  11.    }
  12. }
  13.  

Hay algo malo en eso??
por favor estoy estudiando para cuando vuelva a clases me valla bien y necesito de su ayuda


« Última modificación: 15 Octubre 2011, 03:12 am por framled » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: AYUDAAAAA NECESITO AYUDA CON CODIGO JAVA KiEN ME AYUDA
« Respuesta #1 en: 13 Octubre 2011, 01:43 am »

Revisate toda la teoría que tengas, sobre todo los conceptos de herencia. Estás haciendo uso de super de una manera terrible.

Saludos.


En línea

framled

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: AYUDAAAAA NECESITO AYUDA CON CODIGO JAVA KiEN ME AYUDA
« Respuesta #2 en: 13 Octubre 2011, 05:08 am »

aaaaaaaaaaaaaaaaaaaaaaaaaaa siiiiii eso me temiaaa.... mis bases no son muy buenas y estoy practicando haciendo este tipo de clases xD...

algunos consejos???
En línea

framled

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Ayuda código Java
« Respuesta #3 en: 14 Octubre 2011, 04:18 am »

Me podrian ayudar con el codigo.... q no entiendo en que me equivoque, por mas que leo la teoria

serai de gran ayuda gracias...
En línea

SXF

Desconectado Desconectado

Mensajes: 189



Ver Perfil WWW
Re: [Actualizado] Ayuda código Java
« Respuesta #4 en: 15 Octubre 2011, 10:36 am »

http://www.programacion.com/articulo/tutorjava_nivel_basico_97/21
En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [Actualizado] Ayuda código Java
« Respuesta #5 en: 15 Octubre 2011, 16:05 pm »

Viendo que has actualizado el código, ¿a que te refieres con que si está mal? ¿No te da el resultado esperado? ¿Cuál es el resultado que esperas que te de?
En línea

framled

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [Actualizado] Ayuda código Java
« Respuesta #6 en: 15 Octubre 2011, 21:00 pm »

Viendo que has actualizado el código, ¿a que te refieres con que si está mal? ¿No te da el resultado esperado? ¿Cuál es el resultado que esperas que te de?

si esta mal escrito me refiero a que aun me da el mismo error anterior (cada bloque tenia como centro el mismo centro que el bloque[3];)
quiero que cada bloque tenga un centro de:
bloque[0] = {4.5 , 13.5}
bloque[1] = {4.5 , 14.5}
bloque[2] = {5.5 , 13.5}
bloque[3] = {5.5 , 14.5}


gracias por los pauntes
« Última modificación: 15 Octubre 2011, 21:02 pm por framled » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [Actualizado] Ayuda código Java
« Respuesta #7 en: 15 Octubre 2011, 23:38 pm »

El error se llama "Aliasing".

En Java todo lo que le pasas a una función como parametro, lo que se pasa realmente es el identificador de objeto (su referencia en memoria, por decirlo de alguna forma), por tanto las modificaciones que realices sobre dicho objeto se verán reflejadas fuera.

Es decir, aunque no hicieses esta modificación:
Código
  1. if(i==1){center[0]++ ;center[1]--;}else{center[1]++;}
todos tus objetos seguirían teniendo el mismo centro.

¿Cuál puede ser la solución? Realizar una copia del array y asignarle al centro la copia, o crear un array nuevo y ponerle los distintos valores.

Te recomiendo que te leas muchos muchos muchos apuntes, si no dominas estas cosas tan básicas, estás perdido en Java.

Saludos.
En línea

framled

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [Actualizado] Ayuda código Java
« Respuesta #8 en: 16 Octubre 2011, 01:54 am »

¿Cuál puede ser la solución? Realizar una copia del array y asignarle al centro la copia, o crear un array nuevo y ponerle los distintos valores.

Te refieres a algo como esto??:

Código
  1. //Clase cuadrado...
  2. public class Cuadrado extends Pieza{
  3. private Bloque[] bloque;
  4. public Cuadrado(double [] center, Color color){
  5.        super(center,color);
  6.        this.bloque = new Bloque[4];
  7.        Bloque bloq = new Bloque[4];
  8.        for(int i = 0 ; i<4 ; i++){
  9.            bloq[i] = new Bloque(center,color);
  10.            if(i==1){center[0]++ ;center[1]--;}else{center[1]++;}
  11.        }
  12.        this.bloque = bloq;
  13.    }
  14. }
  15. }
  16.  

es el mismo error...
Gracias SALUDOS
« Última modificación: 16 Octubre 2011, 01:55 am por framled » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: [Actualizado] Ayuda código Java
« Respuesta #9 en: 16 Octubre 2011, 14:10 pm »

No, no me refiero a eso, me refiero a algo así:
Código
  1. public void metodo(double[] centro){
  2.    //Suponiendo que centro solo tiene dos posiciones:
  3.    double[] nuevo = new double[2];
  4.    nuevo[0] = centro[0];
  5.    nuevo[1] = centro[1];
  6.    bloque = new Bloque(nuevo, color);
  7. }

algo así me refiero. Tienes que realizar una copia del array, porque me imagino que al hacer estas dos llamadas:
Código
  1. super(center,color);
  2. bloq[i] = new Bloque(center,color);

dentro del código de cada constructor estarás haciendo algo así:
Código
  1. this.centro = center //<-Aliasing

En resumen, tienes que hacer una copia del array si quieres tener centros distintos e independientes.

Y te vuelvo a repetir, leete mucha más teoría. La práctica es necesaria, pero la teoría es mucho más importante.

Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA!!! Creacion de un convertidor de pseudo a codigo JAVA
Java
robertg4 6 6,266 Último mensaje 7 Julio 2010, 20:31 pm
por Debci
Ayuda con codigo de java
Java
pakosamuel 5 2,832 Último mensaje 5 Junio 2010, 21:35 pm
por Leyer
Ayuda con código Java!
Java
compunova 2 1,889 Último mensaje 18 Octubre 2011, 23:43 pm
por klaine
Ayuda con un codigo de java?
Java
omar199609 2 1,292 Último mensaje 7 Junio 2015, 17:08 pm
por Usuario Invitado
Ayuda con código Java
Java
alvarodecadiz9 1 1,086 Último mensaje 10 Septiembre 2016, 12:48 pm
por alvarodecadiz9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines