Aplikacja konsolowa z tworzeniem i edytowaniem obiektów

0

Witam
Napotkałem problem i nie wiem w jaki sposób go rozwiązać. Chciałem napisać aplikajcę konsolową na zasadzie jak poniżej

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("1 - Stworz obiekt  2 - edytuj obiekt   3 - wysietl obiekt ");
		int x = Integer.parseInt(in.readLine());
		
		switch (x)
		{
		case 1:
				System.out.println("1 - Car  2 - Submarine  3 - Plane  4 - Computer ");
				int y = Integer.parseInt(in.readLine());
				switch (y)
				{
				case 1 :
					IToy obiekt1 = new Car(0);
					break;
				case 2:
					IToy obiekt11 = new Submarine(0, 0);
					break;
				case 3 :
					IToy obiekt111 = new Plane(0,0);
					break;
				case 4: 
					IToy obiekt1111 = new Computer();
					break;
				}
		case 2: 
			System.out.println("1 - Car  2 - Submarine  3 - Plane  4 - Computer ");
			int z = Integer.parseInt(in.readLine());
			switch (z)
			{
			case 1 :
				System.out.println("Podaj predkosc");
				int speed = Integer.parseInt(in.readLine());      
				obiekt1.changeSpeed(speed);                 //// TUTAJ 
				
			case 2:
				
				break;
			case 3 :
				
				break;
			case 4: 
			IToy obiekt1111 = new Computer();
				break;
			
			}
			
		}

	}

}

Celem byłą możliwość tworzenia obiektów edytowania ich oraz wyświetlania informacji. Jednak jak się okazało nie jest możliwe za pomocą instrukcji switch tak jak ja to chciałem zrobić. Wymyśliłem sobie że w pierwszym switch będę mogł wybrać co chce użytkownik zrobić. Poda case:1 miałem tworzenie obiektów (zrobiłem na skróty ale i tak nie wiem jak rozwjązać problem z nazywaniem nowopowstałcyh obiektów) Problem jednak najważniejszy pojawił sie gdy w case 2 chciałem edytować moje stworzone obiekty. Okazało się że nie moge operować na nich skoro w wcześniejszym switchu je tworze gdyż to tak jakby on nie były zadelkarowane to dopiero będą co oczywiście rozumiem. Dlatego drodzy użytkownicy proszę o pomysł albo szkic tego jak to powinno wyglądać taki interfejs do tworzenia obiektó ich edytowania i wypisywania. Dziękuje z góry!

1

W Javie obowiazuje zakres blokowy co oznacza tyle, ze zmienne widoczne sa w odrebie swojego bloku i blokow zagniezdzonych. W Twoim wypadku sa w switchu a poza switchem nie sa juz widoczne.

@Edit Po najmniejszej lini oporu mozesz sobie napisac pare funkcji i delegowac do nich rzadania na odpowiednim poziomie wyboru.

0

Pomijając kwestię widoczności zmiennych, organizacja programu jest bez sensu - brakuje pętli. Jeżeli użytkownik wybierze '1' i utworzy obiekty, to już nie będzie miał możliwości edytowania i wyświetlenia. Jak wybierze '2', to będzie edytował nieutworzony obiekt.

0

Chodziło mi głównie o kwestiw widoczności zmiennych ponieważ tu napotkałem problem którego nie potrafiłem rozwiązać dlatego dalej nie modyfikowałem kody by działał poprawnie. @skytrack, mógłbyś troszeczkę rozwinąć swój pomysł z tym delegowaniem ort!, czy masz na myśli właśnie użycie delegat ?

1

Trudno podać właściwe miejsce deklaracji, bo Twój kod musi się zmienić. Jeśli nie będzie zmian, to:

        switch (x)
        {
        case 1:
                System.out.println("1 - Car  2 - Submarine  3 - Plane  4 - Computer ");
                int y = Integer.parseInt(in.readLine());
                IToy obiekt1 = null;
                switch (y)
                {
                case 1 :
                    obiekt1 = new Car(0);
                    break;
0

Aha teraz rozumiem że cała koncepcja ze switchami jest zła, bo w takim wypadku musiałbym stworzyć te obiekty wcześniej a później dopiero przypisywać im określony typ, modyfikować je albo wyświetlać... W takim razie czy mógłbyś mnie naprowadzić jaki typ postępowania mógłbym wybrać by to miało ręce i nogi ?

0

Ja zupełnie nie rozumiem koncepcji Twojego programu.

  1. Co ma się dziać jeśli użytkownik na początku wielokrotnie (3 razy, 2345 razy, ..)wybierze dopisanie samochodu? Ma powstać jeden obiekt typu Car czy kolekcja, np.
ArrayList<Car>

?
2. Jeśli ma powstać kolekcja, a użytkownik wybierze edycję lub wyświetlenie, to który z licznych samochodów ma być edytowany (wyświetlany)?

0

Chciałbym by za każdym razem tworzony został obiekt wybranego przez mnie typu

0

Na żadne pytanie nie odpowiedziałeś.

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