Klasy Java

0

Witam mam do zrobienia następujące zadanie. Zrobiłem wszystko nie wiem tylko jak stworzyć metodę najdluzszy(). Pod treścią zadania przedstawiam swój kod
public class Test {

public static void main(String[] args)
{
    Punkt p1 = new Punkt(0,0), p2 = new Punkt(3,4), p3 = new Punkt(2,3), p4 = new Punkt(4,0);
   
    Odcinek od1 = new Odcinek(p1, p2), od2 = new Odcinek(p1, p4);
    Odcinek[] odcinki = {od1, od2, new Odcinek(p3, p4)};
   
    for (Odcinek od : odcinki)
        System.out.println(od);
   
    System.out.println("Długość odcinka " + od1.numer() + " = " + od1.dlugosc());
    System.out.println("Odległość od punktu " +  p3 + " do środka odcinka " + od2.numer() + " = " + od2.odleglosc(p3));
    System.out.println("Dłuższy odcinek to " + od2.dluzszy(odcinki[2]));
    System.out.println("Rzut odcinka " + od1 + " na X to " + od1.rzutX());
    System.out.println("Rzut odcinka " + od1 + " na Y to " + od1.rzutY());
            // własna metoda najdluzszy(...) z klasy Test do napisania!
    System.out.println("Najdłuższy odcinek to " + najdluzszy(odcinki));
}

}

wyprowadził na konsolę poniższe wyniki:

1:(0,0)-(3,4)
2:(0,0)-(4,0)
3:(3,2)-(4,0)
Długość odcinka 1 = 5.0
Odległość od punktu (2,3) do środka odcinka 2 = 3.0
Dłuższy odcinek to 2:(0,0)-(4,0)
Rzut odcinka 1:(0,0)-(3,4) na X to 4:(0,0)-(3,0)
Rzut odcinka 1:(0,0)-(3,4) na Y to 5:(0,0)-(0,4)
Najdłuższy odcinek to 1:(0,0)-(3,4)

Test

public class Zadanie2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Punkt p1 = new Punkt(0,0), p2 = new Punkt(3,4), p3 = new Punkt(2,3), p4 = new Punkt(4,0);
	       
        Odcinek od1 = new Odcinek(p1, p2), od2 = new Odcinek(p1, p4);
        Odcinek[] odcinki = {od1, od2, new Odcinek(p3, p4)};
       
        for (Odcinek od : odcinki)
            System.out.println(od);
       
        System.out.println("Długość odcinka " + od1.numer() + " = " + od1.dlugosc());
        System.out.println("Odległość od punktu " +  p3 + " do środka odcinka " + od2.numer() + " = " + od2.odleglosc(p3));
        System.out.println("Dłuższy odcinek to " + od2.dluzszy(odcinki[2]));
        System.out.println("Rzut odcinka " + od1 + " na X to " + od1.rzutX());
        System.out.println("Rzut odcinka " + od1 + " na Y to " + od1.rzutY());
                //własna metoda najdluzszy(...) z klasy Test do napisania!
        
        // System.out.println("Najdłuższy odcinek to " + najdluzszy(odcinki));
    }

	private static Odcinek najdluzszy(Odcinek[] odcinki) {
		double[] dl = new double[7];
		int i =1;
		for (Odcinek od : odcinki)
		{
		
		}
		
		return null;
	}

	}



 

Klasa punkt

import java.util.Arrays;


public class Punkt {
	protected int[] punkt = new int[2];
	public Punkt(int i, int j) {
		punkt[0] = i;
		punkt[1] = j;
		
	}
	public Punkt()
	{
		
	}
	@Override
	public String toString() {
		return Arrays.toString(punkt) ;
	}
	

}
 

Oraz klasa odcinek

public class Odcinek {
	private Punkt p1 = new Punkt(),
				  p2 = new Punkt();
	private int nr;
	private static int numer;
	public Odcinek(Punkt p1, Punkt p2) {
		this.p1 = p1;
		this.p2 = p2;
		nr = ++numer;
	}
	Odcinek()
	{
		//nr = ++numer;	
	}
	public int numer() {
		return nr;
	}
	public double dlugosc() {
		//double dlugosc;
		//dlugosc = Math.sqrt((p1.punkt[0] - p2.punkt[0])*(p1.punkt[0] - p2.punkt[0])+(p1.punkt[1] - p2.punkt[1])*(p1.punkt[1] - p2.punkt[1]));
		return  Math.sqrt((p1.punkt[0] - p2.punkt[0])*(p1.punkt[0] - p2.punkt[0])+(p1.punkt[1] - p2.punkt[1])*(p1.punkt[1] - p2.punkt[1]));
	}
	
	public String toString() {
		return ""+nr+":" +p1 +", " +p2;
	}
	public double odleglosc(Punkt p3) {
		Punkt sr = new Punkt();
		sr.punkt[0] = (p1.punkt[0]+p2.punkt[0])/2;
		sr.punkt[1] = (p1.punkt[1]+p2.punkt[1])/2;
		Odcinek odl = new Odcinek(sr, p3);
		return odl.dlugosc();
	}
	public Odcinek dluzszy(Odcinek odcinek) {
		if(this.dlugosc()<odcinek.dlugosc())
		return odcinek;
		else if (this.dlugosc()==odcinek.dlugosc())
			return null;
		else
			return this;
		
	}
	public Odcinek rzutX() {
		Punkt   x1 =new Punkt(),
				x2 = new Punkt();
		Odcinek x = new Odcinek(x1, x2);
		x1.punkt[0] = this.p1.punkt[0];
		x1.punkt[1] = 0;
		x2.punkt[0] = this.p2.punkt[0];
		x2.punkt[1] = 0;
		return x;
	}
	public Odcinek rzutY() {
		Punkt   x1 =new Punkt(),
				x2 = new Punkt();
		Odcinek y = new Odcinek(x1, x2);
		x1.punkt[1] = this.p1.punkt[1];
		x1.punkt[0] = 0;
		x2.punkt[1] = this.p2.punkt[1];
		x2.punkt[0] = 0;
		return y;
	}
	public Odcinek ktory(int numer)
	{
		return null;
	}
	

}
 
0
  1. Bierzesz pierwszy i zakładasz, że jest najdłuższy (zapisujesz jego długość oraz referencję do niego)
  2. Iterujesz po kolejnych i jeśli któryś z nich jest dłuższy od aktualnego najdłuższego, to aktualizujesz max. długość i referencję do odcinka
  3. Po przeiterowaniu masz długość najdłuższego oraz referencję do niego
0

No to wiem tylko nie bardzo rozumiem co do mnie piszesz:). Jakbyś mógł mi napisać kod to byłbym bardzo wdzięczny

1 użytkowników online, w tym zalogowanych: 0, gości: 1