Zadanie Pudełka - proszę o wskazówki i rady

0

Zadanie - Pudełka
Zdefiniować klasę Box, której obiekty będą stanowić pudełka o zadanych rozmiarach (szerokość, wysokość).
Dostarczyć w tej klasie specjalnych metod łączenia pudełek:

diagonalnie (zwraca pudełko o rozmiarach równych sumie szerokości i wysokości łączonych pudełek) - nazwa metody joinDiagonal(),
poziomo (zwraca pudełko o rozmiarach równych sumie szerokości łączonych pudełek i wysokości równej maksimum z wysokości pudełek,
nazwa metody: joinHorizontal()
pionowo (zwraca pudelko o rozmiarach równych sumie wysokości łączonych pudełek i szerokości równej maksimum z szerokości pudełek).
nazwa metody: joinVertical()

Przetestować klasę w następujący sposób:

użytkownik programu w dialogach wejściowych wprowadza dowolną liczbę szerokości pudełek
wysokość tych pudelek równa jest 2*szerokość
wyprowadzić na konsolę wielkość (szerokość, wysokość) każdego z pudełek
połączyć wszystkie otrzymane pudełka w kombinacje odpowiednio: diagonalne, wertykalne i horyzontalne i wyprowadzić na konsolę ich rozmiary
Przy pobieraniu danych zadbać o obsługę błędów. Nie stosować tablic.

Dopiero się uczę programować i prosiłabym o pomoc. Nie chodzi mi oczywiście o gotowca. Ale wskazówki, rady.

 class Box {
 	
 	private int dlugosc;
 	private int wysokosc;
 	
 	public Box(int dl, int wys)
 	
 	{
 		dlugosc = dl;
 		wysokosc = wys;
 		
 	}
 	
 	public int PodajDlugosc(){
 		return dlugosc;
 	}
 	
 	public int PodajWysokosc(){
 		return wysokosc;
 	}
 	
 	public double joinDiagonal(int x){
		int iloscPudelek = x;

 	}
 	 	
 	public double joinHorizontal(int x){
		int iloscPudelek = x;
 	}
 	
 	public double joinVertical(int x){
		int iloscPudelek = x;
 	}
 	
 	
 } 

Na razie mam tylko tylko kody. Niestety nie wiem jak uzupełnić te metody.
Gdyby jeszcze pudełka były równej wielkości, ale tak nie wiem ile zmiennych wstawić w metody, by np. obliczało maksymalną szerokość z pudełek czy sumowało kilka równych długości.

W klasie main planowałam dać pętlę powtarzającą tyle razy ile podałby użytkownik (czyli ilość pudełek).
Przy okazji każde przejście prze pętle zwracałoby wielkość danego pudełka.
Ale niestety bez napisania metod nie mogę nic zrobić, a nie wiem jak się za to zabrać :(
Znalazłam wskazówki do tego zadania, jednak z użyciem tablic, a w polecenia uwzględniono, że używać ich nie mogę.

Proszę o pomoc i wybaczenie, że może pytam o zbyt banalne sprawy.

0

Napisałam już klasę Box, jednak mam problem z klasą main.


class Box{
	
	double szer;
	double wys;
	
	public Box(double szerokosc, double wysokosc){
		
		szer = szerokosc;
		wys = wysokosc;
	}	
	
	public Box joinDiagonal(Box x){
		Box pudelko = new Box(szer+x.szer, wys+x.wys);
		return pudelko;
	}
	public Box joinHorizontal(Box x){
		double z;
		
			if(szer>x.szer)z=szer;
			else{
				z=x.szer;
				}
		Box pudelko = new Box(z, wys+x.wys);
			
		return pudelko;
	}
	public Box joinVertical(Box x){
		double z;
			if(wys>x.wys)z=wys;
			else{
				z=x.wys;
				}
		Box pudelko = new Box(szer+x.szer, z);
		return pudelko;
    }
 }


 

i tutaj klasa main, której nie mogę skompilować.

import javax.swing.JOptionPane;

 class Main {
 	
	public static void main(String[] args) {
		Box diagonalnie = new Box(0,0);
		Box horyzont = new Box(0,0);
		Box vertical = new Box(0,0);
		
  while(true){
  	
	String x = JOptionPane.showInputDialog(null, "Podaj szerokosc pudelka (wysokosc = szerokosc * 2):");
		
		double y;
		
		if(x == null)JOptionPane.showMessageDialog(null, "Wprowadz dane!");
		else{
		
			try{
					y = Double.parseDouble(x);
					if(y < 0)JOptionPane.showMessageDialog(null, "Szerokosc nie może byc ujemna!");
		   	   }
		   	   
			catch(Exception err){
					JOptionPane.showMessageDialog(null, "Szerokosc musi byc liczba!");
					y = 0;
				}	
			
		if(y != 0){
				Box Pudelko = new Box(2*y, y);
				diagonalnie = diagonalnie.joinDiagonal(Pudelko);
				horyzont = horyzont.joinVertical(Pudelko);
				vertical = vertical.joinHorizontal(Pudelko);
				}
		}
	}
	
		JOptionPane.showMessageDialog(null, "Polaczone diagonalnie wszystkich pudelek: \nszerokosc= " +diagonalnie.szer+ ", wysokosc=" +diagonalnie.wys+ "\n");
		JOptionPane.showMessageDialog(null, "Polaczone wertykalne wszystkich pudelek: \nszerokosc= " +horyzont.szer+ ", wysokosc=" +horyzont.wys+ "\n");
		JOptionPane.showMessageDialog(null, "Polaczone horyzontalne wszystkich pudelek:\nszerokosc= " +vertical.szer+ ", wysokosc=" +vertical.wys+ "\n");
	}
}

 

38: error: unreachable statement
w miejscu:

		JOptionPane.showMessageDialog(null, "Polaczone diagonalnie wszystkich pudelek: \nszerokosc= " +diagonalnie.szer+ ", wysokosc=" +diagonalnie.wys+ "\n");
		JOptionPane.showMessageDialog(null, "Polaczone wertykalne wszystkich pudelek: \nszerokosc= " +horyzont.szer+ ", wysokosc=" +horyzont.wys+ "\n");
		JOptionPane.showMessageDialog(null, "Polaczone horyzontalne wszystkich pudelek:\nszerokosc= " +vertical.szer+ ", wysokosc=" +vertical.wys+ "\n"); 

Mógłby ktoś wyjaśnić, gdzie tkwi błąd? :(

0

Rozumiesz zwrot unreachable statement? Wpierw masz pętlę

while(true)
{
 ...
}

a po pętli jakiś kod. Przecież ten kod nigdy nie zostanie wykonany. Kompilator Javy nie pozwala na umieszczanie nieosiągalnego kodu.

0

Już zmieniłam pętle. Teraz działa.
Dzięki za pomoc.

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