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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con Constructores en Java - Eclipse
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Constructores en Java - Eclipse  (Leído 2,708 veces)
JADP

Desconectado Desconectado

Mensajes: 34



Ver Perfil
Ayuda con Constructores en Java - Eclipse
« en: 11 Noviembre 2013, 20:43 pm »

Hola a todos, estoy haciendo un programa que tiene que calcular la distancia entre 2 puntos ubicados en el plano cartesiano, en la clase Calculadora se hace el proceso donde se haya la distancia entre los 2 puntos ubicados en el plano cartesiano, ese resultado lo tengo que enviar a una clase que se llama Punto, en La clase Distancia es donde se obtiene el resultado que esta en la clase Punto y luego imprime.

Ya tengo hecho todo esto pero al final siempre me imprime como resultado 0.0. Quisiera que por favor me ayudaran a solucionar este problema, me gusta mucho la programacion.

Este es el link que contiene un archivo con las 4 clases que yo hice + la explicacion del ejercicio: http://goo.gl/eOk0x3

El paquete del proyecto se llama Hoy,  Agradezco sus ayudas...


En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda con Constructores en Java - Eclipse
« Respuesta #1 en: 11 Noviembre 2013, 22:24 pm »

Hola. Mira un poco más arriba y verás el foro de Java ;)

He mirado tu código de reojo, y sinceramente no sé por qué te dejan hacer eso en 3 clases, cuando en una clase puedes tener todos los métodos estáticos que quieras, y no sería necesario crear objetos de esa clase.

Quizás el problema sea por que al momento de pasarle el resultado a la clase Punto, creas un objeto Punto para utilizar setDistancia() y guardar el resultado en la variable distancia de Punto, pero al no ser estática la variable, esto quiere decir que todo objeto tendrá copias de dicha variable. Por lo que al obtener el resultado desde el método getDistancia() desde la clase Distancia, se hace uso de otro objeto Punto, que tendría también su propia copia de distancia, y esta estará en 0.

Objeto Punto N° 1:
1) La clase Calculadora hace el proceso en el método calcularDiferencia().
2) Crea un objeto Punto para utilizar el metodo setDistancia()
3) Le pasa el resultado por medio del método
4) Al salir del metodo el objeto Punto se destruye (por ser local) y con el, la variable distancia en donde estaba el resultado..

Objeto Punto N° 2:
1) En la clase Distancia creas otro objeto Punto
2) Obtiene la distancia desde la clase Punto con getDistancia
3) Te devolverá 0 por que este otro objeto nunca estableció un valor para su copia de la variable distancia

Tienes que hacer la variable de resultado estática, para que exista sola una versión compartida entre todos los objetos de punto.


Ejemplo:

Clase Calculadora:


Código
  1. public class Calculadora {
  2.  
  3. private float coordenadaX;
  4. private float coordenadaX2;
  5. private float coordenadaY;
  6. private float coordenadaY2;
  7.  
  8. public Calculadora() {
  9.  
  10. }
  11.  
  12. public Calculadora (float x1, float x2, float y1, float y2)
  13. {
  14.  this.coordenadaX= x1;
  15.  this.coordenadaX2= x2;
  16.  this.coordenadaY= y1;
  17.  this.coordenadaY2= y2;
  18. }
  19.  
  20. /*
  21.   *  SETTERS DE LAS COORDENADAS
  22.   */
  23.  
  24.  
  25. public void setCoordenadaX1 (float x1)
  26. {
  27.  this.coordenadaX = x1;
  28. }
  29.  
  30. public void setCoordenadaX2 (float x2)
  31. {
  32.  this.coordenadaX2 = x2;
  33. }
  34.  
  35. public void setCoordenadaY1 (float y1)
  36. {
  37.  this.coordenadaY = y1;
  38. }
  39.  
  40. public void setCoordenadaY2 (float y2)
  41. {
  42.  this.coordenadaY2 = y2;
  43. }
  44.  
  45. /*
  46.   *  GETTERS DE LAS COORDENADAS
  47.   */
  48.  
  49.  
  50. public float getX ()
  51. {
  52.  return coordenadaX;
  53. }
  54.  
  55. public float getX2 ()
  56. {
  57.  return coordenadaX2;
  58. }
  59.  
  60. public float getY ()
  61. {
  62.  return coordenadaY;
  63. }
  64.  
  65. public float getY2 ()
  66. {
  67.  return coordenadaY2;
  68. }
  69.  
  70. /* ***********************************************************
  71.   *  DEVUELVE LA SUMA DE LAS POTENCIAS DE LAS DIFERENCIAS ENTRE
  72.   *  LAS COORDENADAS X,X2 / Y,Y2
  73.   * **********************************************************/
  74. public void calcularDiferencia()
  75. {
  76.  float potencia = 2;
  77.  float diferencia_x = 0;
  78.  float diferencia_y = 0;
  79.  float pow_diferencia_x = 0;
  80.  float pow_diferencia_y = 0;
  81.  float suma_potencias = 0;
  82.  float distancia = 0;
  83.  
  84.  diferencia_x = (this.coordenadaX - this.coordenadaX2);
  85.  diferencia_y = (this.coordenadaY - this.coordenadaY2);
  86.  pow_diferencia_x =  (float) Math.pow(diferencia_x,potencia);
  87.  pow_diferencia_y = (float) Math.pow(diferencia_y,potencia);
  88.  suma_potencias = pow_diferencia_x + pow_diferencia_y;  
  89.  distancia= (float) Math.sqrt(suma_potencias);
  90.  
  91.  Punto punto = new Punto();
  92.  punto.setDistance(distancia);
  93.  
  94. }
  95. }
  96.  

Clase Leer:

Código
  1. import javax.swing.JOptionPane;
  2.  
  3. public class Leer {
  4.  
  5. public final static int ERROR=0;
  6. public final static int INFCIR=1;
  7. public final static int INFTRI=2;
  8. public final static int INFO=3;
  9.  
  10. /*
  11.   *  Constructor por defecto de la clase (esto es una clase con el nombre leer igual que el
  12.   */
  13.  
  14. public Leer()
  15. {
  16.  
  17. }
  18.  
  19. /*
  20.   *  Metodo para leer un entero
  21.   *  @param msn  mensaje para mostrar por pantalla
  22.   *  @param ex esto es el error
  23.   *  @return retorna un entero
  24.   */
  25.  
  26. public static int setPoint (String mensaje, String error)
  27. {
  28.  int coordenada = 0;
  29.  boolean condicion = true;
  30.  
  31.  do
  32.  {
  33.   try
  34.   {
  35.    coordenada = Integer.parseInt(JOptionPane.showInputDialog(mensaje));
  36.    condicion = false;
  37.    return coordenada;
  38.   }
  39.   catch (Exception ex1)
  40.   {
  41.    JOptionPane.showMessageDialog(null, error);
  42.   }
  43.  } while (condicion);
  44.     return 0;
  45. }
  46.  
  47. /*
  48.   * Metodo para leer entero manipulando el icono
  49.   * @param msn
  50.   * @param ex
  51.   * @param icono
  52.   * @return
  53.   */
  54.  
  55. public static int setPoint (String mensaje, String error, int icono)
  56. {
  57.  int coordenada = 0;
  58.  boolean condicion = true;
  59.  
  60.  do
  61.  {
  62.   try
  63.   {
  64.    coordenada = Integer.parseInt(JOptionPane.showInputDialog(null, mensaje, " ", icono));
  65.    condicion = false;
  66.    return coordenada;
  67.   }
  68.   catch (Exception ex1)
  69.   {
  70.    JOptionPane.showMessageDialog(null, error);
  71.   }
  72.  }
  73.  
  74.  while (condicion);
  75.  return 0;
  76. }
  77.  
  78. /* Metodo para leer un decimal
  79.   * @param msn
  80.   * @param ex
  81.   * @return
  82.   */
  83.  
  84. public static float setPointDecimal (String mensaje, String error)
  85. {
  86.  float coordenada = 0;
  87.  boolean condicion = true;
  88.  
  89.  do
  90.  {
  91.   try
  92.   {
  93.    coordenada = Float.parseFloat(JOptionPane.showInputDialog(mensaje)); // convierte el numero a float
  94.    condicion = false;
  95.    return coordenada; // devuelve el numero y termina el metodo
  96.   }
  97.   catch (Exception ex1)
  98.   {
  99.    JOptionPane.showMessageDialog(null, error); // nostramos la excepcion
  100.   }
  101.  
  102.  } while (condicion);
  103.  
  104.      return 0;
  105. }
  106.  
  107.  
  108. public String setMessage (String mensaje)
  109. {
  110.  return JOptionPane.showInputDialog (mensaje);
  111. }
  112.  
  113.  
  114. public boolean setState (String mensaje, String titulo)
  115. {
  116.  int opcion = JOptionPane.showConfirmDialog(null, mensaje, titulo, 0,1);
  117.  
  118.  if (opcion == 0)
  119.  {
  120.   return true;
  121.  }
  122.  else
  123.  {
  124.   return false;
  125.  }
  126. }
  127. }
  128.  

Clase Punto:

Código
  1. public class Punto {
  2.  
  3.  private static float distancia = 0f; // estatico. Solo habra 1 version de esta variable
  4.  
  5. public void setDistance(float distancia) {
  6.  
  7.   this.distancia = distancia;
  8.  
  9. }
  10.  
  11. public float getDistance() {
  12.  
  13.   return this.distancia;
  14. }
  15.  
  16. }
  17.  

Clase Distancia:

Código
  1. import javax.swing.JOptionPane;
  2.  
  3. public class Distancia {
  4.  
  5. public static void main(String[] args) {
  6.  
  7.  Calculadora calcula = new Calculadora();
  8.  Punto punto = new Punto();
  9.  
  10.  calcula.setCoordenadaX1(Leer.setPoint("Digite La Coordenada X1", "Ingrese un numero real por favor."));
  11.  calcula.setCoordenadaX2(Leer.setPoint("Digite La Coordenada X2", "Ingrese un numero real por favor."));
  12.  calcula.setCoordenadaY1(Leer.setPoint("Digite La Coordenada Y1", "Ingrese un numero real por favor."));
  13.  calcula.setCoordenadaY2(Leer.setPoint("Digite La Coordenada Y2", "Ingrese un numero real por favor."));
  14.  
  15.  calcula.calcularDiferencia();
  16.  
  17.  float distancia = punto.getDistance();
  18.  
  19.  JOptionPane.showMessageDialog(null, "La Diferencia Entre Las 2 Coordenadas es: " + distancia);    
  20. }
  21. }
  22.  


« Última modificación: 11 Noviembre 2013, 22:27 pm por M1t$u » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda con Constructores en Java - Eclipse
« Respuesta #2 en: 11 Noviembre 2013, 22:30 pm »

Me disculparás pero le he retocado un poquitín el código, no he alcanzado a modificarlo todo porque no tengo tiempo xD

Como recomendaciónes:

  • Utiliza identificadores para tus variables/objetos que representen su propósito. Vamos, que escribir un poco más no es demasiaaaado trabajo.
  • Cuando tengas que hacer operaciones que no necesitas de ningún objeto para que se pueda utilizar, hazla static.


Saludos.
« Última modificación: 12 Noviembre 2013, 17:43 pm por M1t$u » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA. CON JAVA ECLIPSE ..
Java
magorodiel 1 2,146 Último mensaje 2 Diciembre 2013, 19:27 pm
por Leyer
Problema con Java y Eclipse
Java
MNicolas 3 2,521 Último mensaje 3 Febrero 2014, 00:45 am
por Debci
Ayuda con estos constructores C++
Programación C/C++
ThronerAXE 1 1,394 Último mensaje 7 Febrero 2014, 01:11 am
por Yoel Alejandro
Ayuda con pizzeria en eclipse
Java
elkpo32 1 2,228 Último mensaje 11 Agosto 2016, 22:02 pm
por + 1 Oculto(s)
Ayuda para usar código, de Jframe a consola, Java Eclipse
Java
GERATKD 1 3,063 Último mensaje 25 Abril 2023, 18:35 pm
por CronicKraze
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines