Obiekty należące do innego obiektu

0

Witam wszystkich.

Piszę taki program (dopiero się uczę więc każda sugestia mile widziana) w którym wymyśliłem takie założenia.

Tworzymy „układ planetarny”
tzn podajemy ile chcemy mieć planet(zmienna ilość) , a potem ile planeta ma mieć księżycy
Każda planeta ma swoje współrzędne gdzie się znajduje a księżyce (jeśli są) są w pobliżu planety.

Chcę napisać to obiektowo czyli planeta ma swoje księżyce
i tu pojawia się mój problem
jak się potem odwołać do danego księżyca danej planety z głównej klasy
albo sprawdzić czy i ile planeta ma księżyców
albo np. jak wypisać je po kolei
księżyc 1 x=..., y=... Planety1
księżyc 2 x=..., y=... Planety1
księżyc 3 x=..., y=... Planety1
księżyc 1 x=..., y=... Planety2


...
gdzie x,y to współrzędne

napisałem to tak:

public class Planety {

	
	public static void main(String[] args) {
				
		  int a;

		  Scanner odczyt = new Scanner(System.in);

		  System.out.println("Podaj ilosc planet: ");
		  	a = odczyt.nextInt();
		  
		  	Planeta[] plan= new Planeta[a]; 
		  	for (int i=0; i<a; i++)  
		  	{
		  		float x, y;
		  		int  ilosc;
		  				  	 		  		
		  		System.out.println("podaj pozycje x planety ");
			  	x = odczyt.nextInt();
			  	System.out.println("podaj pozycje y planety ");
			  	y = odczyt.nextInt();
			  	System.out.println("podaj ilość ksiezycy ");
			  	ilosc = odczyt.nextInt();
		  		
		  		plan[i] = new Planeta(x,y,ilosc);   
		  	}

// pytanie jak np. wypisać księżyce planet
// albo sprawdzić czy dana planeta ma i ile księżyców 	   
		  }}
 

///////////////////////// nowy plik

package Planety;

import java.util.Scanner;
import java.util.Random;  

public class Planeta{
	float x;  
	float y;
	
	int ilosc;  
	
	public Blok(float i, float j, int m){
		x = i;
		y = j;
		d = 3; // odleglosc orbity (kwadratowej ;)  )
		ilosc = m;
		
	  		Ksiezyc[] ksi = new Ksiezyc[ilosc]; 
	  		Random randomGenerator = new Random();
	  		
	  		for (int jj=0; jj<ilosc; jj++)
	  		  {
	  		 ksi[jj] = new Punkt((x-d/2)+randomGenerator.nextFloat()*d,randomGenerator.nextFloat()*((y+d/2)-(y-d/2)));
 			}	  		
	  	}
}

 

///////////////////// nowy plik

package Planety;


public class Ksiezyc {
	float x;  
	float y;
	
	
	public Ksiezyc(float a, float b){
	  
		x= a;    
		y= b;   
		
	}

}
 
0

Uzyj zbiorow (java.util.Set)

0

Planety jak na razie nic nie wiedzą o księżycach a tablica

Ksiezyc[] ksi

ma zasięg lokalny metody Blok, więc sobie generujesz księżyce, a za chwilę są one tracone. Powinieneś co najmniej przenieść deklarację tej tablicy do pól klasy. A jak się potem do tego dostać? Dwie opcje albo robisz to pole jako publiczne, albo zostawiasz je jako prywatne i tworzysz metodę dostępową ,tzw getter, getKsiezyce (getMoons?). Osobiście polecam drugie rozwiązanie.

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