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 Punto2) Obtiene la distancia desde la clase Punto con
getDistancia3) Te devolverá 0 por que este otro objeto
nunca estableció un valor para su copia de la variable distanciaTienes 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:public class Calculadora {
private float coordenadaX;
private float coordenadaX2;
private float coordenadaY;
private float coordenadaY2;
public Calculadora() {
}
public Calculadora (float x1, float x2, float y1, float y2)
{
this.coordenadaX= x1;
this.coordenadaX2= x2;
this.coordenadaY= y1;
this.coordenadaY2= y2;
}
/*
* SETTERS DE LAS COORDENADAS
*/
public void setCoordenadaX1 (float x1)
{
this.coordenadaX = x1;
}
public void setCoordenadaX2 (float x2)
{
this.coordenadaX2 = x2;
}
public void setCoordenadaY1 (float y1)
{
this.coordenadaY = y1;
}
public void setCoordenadaY2 (float y2)
{
this.coordenadaY2 = y2;
}
/*
* GETTERS DE LAS COORDENADAS
*/
public float getX ()
{
return coordenadaX;
}
public float getX2 ()
{
return coordenadaX2;
}
public float getY ()
{
return coordenadaY;
}
public float getY2 ()
{
return coordenadaY2;
}
/* ***********************************************************
* DEVUELVE LA SUMA DE LAS POTENCIAS DE LAS DIFERENCIAS ENTRE
* LAS COORDENADAS X,X2 / Y,Y2
* **********************************************************/
public void calcularDiferencia()
{
float potencia = 2;
float diferencia_x = 0;
float diferencia_y = 0;
float pow_diferencia_x = 0;
float pow_diferencia_y = 0;
float suma_potencias = 0;
float distancia = 0;
diferencia_x = (this.coordenadaX - this.coordenadaX2);
diferencia_y = (this.coordenadaY - this.coordenadaY2);
pow_diferencia_x
= (float) Math.
pow(diferencia_x,potencia
); pow_diferencia_y
= (float) Math.
pow(diferencia_y,potencia
); suma_potencias = pow_diferencia_x + pow_diferencia_y;
distancia
= (float) Math.
sqrt(suma_potencias
);
Punto punto = new Punto();
punto.setDistance(distancia);
}
}
Clase Leer:
import javax.swing.JOptionPane;
public class Leer {
public final static int ERROR=0;
public final static int INFCIR=1;
public final static int INFTRI=2;
public final static int INFO=3;
/*
* Constructor por defecto de la clase (esto es una clase con el nombre leer igual que el
*/
public Leer()
{
}
/*
* Metodo para leer un entero
* @param msn mensaje para mostrar por pantalla
* @param ex esto es el error
* @return retorna un entero
*/
{
int coordenada = 0;
boolean condicion = true;
do
{
try
{
condicion = false;
return coordenada;
}
{
}
} while (condicion);
return 0;
}
/*
* Metodo para leer entero manipulando el icono
* @param msn
* @param ex
* @param icono
* @return
*/
public static int setPoint
(String mensaje,
String error,
int icono
) {
int coordenada = 0;
boolean condicion = true;
do
{
try
{
condicion = false;
return coordenada;
}
{
}
}
while (condicion);
return 0;
}
/* Metodo para leer un decimal
* @param msn
* @param ex
* @return
*/
public static float setPointDecimal
(String mensaje,
String error
) {
float coordenada = 0;
boolean condicion = true;
do
{
try
{
coordenada
= Float.
parseFloat(JOptionPane.
showInputDialog(mensaje
)); // convierte el numero a float condicion = false;
return coordenada; // devuelve el numero y termina el metodo
}
{
JOptionPane.
showMessageDialog(null, error
); // nostramos la excepcion }
} while (condicion);
return 0;
}
{
}
{
int opcion
= JOptionPane.
showConfirmDialog(null, mensaje, titulo,
0,
1);
if (opcion == 0)
{
return true;
}
else
{
return false;
}
}
}
Clase Punto:public class Punto {
private static float distancia = 0f; // estatico. Solo habra 1 version de esta variable
public void setDistance(float distancia) {
this.distancia = distancia;
}
public float getDistance() {
return this.distancia;
}
}
Clase Distancia:import javax.swing.JOptionPane;
public class Distancia {
public static void main
(String[] args
) {
Calculadora calcula = new Calculadora();
Punto punto = new Punto();
calcula.setCoordenadaX1(Leer.setPoint("Digite La Coordenada X1", "Ingrese un numero real por favor."));
calcula.setCoordenadaX2(Leer.setPoint("Digite La Coordenada X2", "Ingrese un numero real por favor."));
calcula.setCoordenadaY1(Leer.setPoint("Digite La Coordenada Y1", "Ingrese un numero real por favor."));
calcula.setCoordenadaY2(Leer.setPoint("Digite La Coordenada Y2", "Ingrese un numero real por favor."));
calcula.calcularDiferencia();
float distancia = punto.getDistance();
JOptionPane.
showMessageDialog(null,
"La Diferencia Entre Las 2 Coordenadas es: " + distancia
); }
}