Método de otra clase y uso de toString ()

Popkiness:

Estoy tratando de hacer este trabajo código, recibirá 2 puntos (x, y) y (x1, y1) de usuario en MAIN y utilizar un método de otra clase y obtener el cálculo.

También sería muy agradable recibir una explicación sobre toString.

import java.util.Scanner;
public class Test{
    public static void main(String[]args)
    {
        Scanner scan = new Scanner(System.in);
        double x , y , x1 , y1;
        Pytaguras Triangle = new Pytaguras();

        System.out.println("Hello , this program is using Pytagoras formula" +
        " on the 4 point that you enter");
        System.out.println("Please enter 4 points to calculate the distance");
        x = scan.nextDouble();
        y = scan.nextDouble();
        x1 = scan.nextDouble();
        y1 = scan.nextDouble();
        Triangle.setDouble( x, y,  x1, y1);
        System.out.println("the distance between 2 points is :" + Triangle.calculate() );

    }
}

public class Pytaguras
{
    private double x, y, x1 ,y1 ;
    public void setDouble(double _x, double _y, double _x1, double _y1)
    {   _x=x;
        _y=y;
        _x1=x1;
        _y1=y1;}

    public double calculate(double _x , double _y , double _x1 , double _y1 )
    {   double s;
         s = Math.sqrt((_x-_y)*(_x-_y)+(_x1-_y1)*(_x1-_y1));
        return s;
    }

}
hc_dev:

Si desea recibir la distancia de cálculo a través del método toString()de la clase Triangle, sólo tiene que ponerlo en práctica misma como método calculate:

Posible solución usando toString

Su clase se vería así:

public class Pytaguras {
    private double x, y, x1 ,y1 ;
    public void setDouble(double _x, double _y, double _x1, double _y1) {
        _x=x;
        _y=y;
        _x1=x1;
        _y1=y1;
    }

    public static double calculate(double _x , double _y , double _x1 , double _y1 ) {
        return Math.sqrt((_x-_y)*(_x-_y)+(_x1-_y1)*(_x1-_y1));
    }

    public String toString() {
        return "Distance is " + Math.sqrt((x - y)*(x -y)+(x1 - y1)*(x1 - y1));
    }
}

Lo que probablemente salió mal?

Cuando se trató de aplicar toString()la siguiente manera:

// code omitted for clarity

public double calculate(double _x , double _y , double _x1 , double _y1 ) {   
  double s; // variable declared locally, thus can be used only inside this method
  s = Math.sqrt((_x-_y)*(_x-_y)+(_x1-_y1)*(_x1-_y1));
  return s;
}

// code omitted for clarity

public String toString() {
  return s; // will give compiler-error, since symbol/variable "s" is not visible here, but only inside method calculate
}

// code omitted for clarity

Refactorización = optimización de su código

utilizar staticel método de utilidad: Su calculationmétodo no depende de ninguna variable ( x,y,x1,y1) declaradas dentro de la clase, pero sólo en los parámetros. Por lo tanto, es independiente y se puede hacer static. Por lo tanto haría una utilidad de método que se puede llamar desde fuera como Pytaguras.calculate(...). Ver tutorial de Java en estática .

utilizar el constructor para la inicialización de variables: Sus 2 puntos se pueden inicializar directamente mediante el uso de un constructor. Por lo tanto no es necesario llamar a ambos new Pytaguras()y setDouble(x1, y1, x2, y2). Se podría llamar simplemente new Pytaguras(x1, y1, x2, y2). Ver tutorial de Java en el constructor .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=363591&siteId=1
Recomendado
Clasificación