Skocz do zawartości

[Java]Wartość minimalna i maksymalna punktu z List ArrayList


karo

Recommended Posts

Witam,

mam pytanie odnośnie napisania kodu, mianowicie muszę napisać program, który wybierze z listy wartość minimanlą i maksymalną współrzędnych x i y a także obliczy szerokość i wysokość, odnosząc się do wcześniej stworzonej klasy Point. Do tej pory mam coś takiego:

* Klasa Point: 

class Point {

	private double x;
	private double y;

	public Point (double u, double v){
		x=u;
		y=v;

	}

	public double getX(){
		return x;
	}

	public double getY(){
		return y;
	}

	public void setX(double new_x){
		x=new_x;
	}

	public void setY(double new_y){
		x = new_y;
	}

	}

Klasa BoundingBox, czyli główny problem:
import java.util.ArrayList;
import java.util.List;

public class BoundingBox {

private Point minPoint;
private Point maxPoint;
private double height;
private double width;

List<Point> pointlist = new ArrayList();

public BoundingBox (List points){
	pointlist=points;

	for (int i=0; i<pointlist.size();i++){
	pointlist.add(new Point(1.0,2.0));  // ???  adding a new point
	pointlist.add(new Point(2.0,3.0));  // ??
	}
}

public Point getMinPoint(){

	for (int i=0; i<pointlist.size();i++);

	return minPoint;
}

public Point getMaxPoint(){

	return maxPoint;
}

public double getHeight(){

	return height;
}

public double getWidth(){

	return width;
}

}

 

Proszę o sugestie. 

Pozdrawiam.

Link do komentarza
Udostępnij na innych stronach

Napisz coś więcej, na jakiej podstawie ma wybierać to minimum i maksimum? Twój punkt ma dwie współrzędne, więc można je obie porównywać.

Wysokość i szerokość, mając dane punkty, już łatwo policzyć. To jest sama matematyka. Jeśli w punkcie x odpowiada za szerokość, a y za wysokość, to szerokość można określić jako wartość bezwzględną różnicy współrzędnych x punktu minPoint oraz maxPoint.

Link do komentarza
Udostępnij na innych stronach

W takim układzie, to minPoint będzie miał najmniejszą znalezioną współrzędną osi poziomej (wartość x) oraz najmniejszą znalezioną współrzędną osi pionowej (wartość y). Analogicznie punkt maxPoint będzie miał największą znalezioną współrzędną osi poziomej (wartość x) oraz największą znalezioną współrzędną osi pionowej (wartość y). Zaimplementowanie tego to w pętli porównywanie wartości i znalezienie minimum/maximum.

Link do komentarza
Udostępnij na innych stronach

Hmm,ok, w takim razie może źle zadałam pytanie. Wiem na czym polega znalezienie punktu minimalnego i maksymalnego niestety nie bardzo wiem jak mam to zapisać w pętli, jak porównać te wartości, gdyż nigdy takiego programu nie pisałam. Czy mam wprowadzić jakieś nowe zmienne typu x_min, x_max? Kompletnie nie mam pomysłu...
Link do komentarza
Udostępnij na innych stronach

tak, przechodzisz po liście punktów i gdy znajdziesz wartości mniejsze przypisujesz odpowiednie do min_x lub min_y np. coś takiego:

public Point getMinPoint() {
    double min_x, min_y;
    min_x = pointlist.get(0).getX();
    min_y = pointlist.get(0).getY();

    for (Point point : pointlist) {
        if (point.getX() < min_x) {
            min_x = point.getX();
        }
        if (point.getY() < min_y) {
            min_y = point.getY();
        }
    }
    minPoint = new Point(min_x, min_y);
    return minPoint;
}

Metodę  getMaxPaint() piszesz analogicznie.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...