Jak odwołać się do danej instancji klasy, poprzez zmienną w jej konstruktorze?

0

Witam,

Mam taki problem. Otóż chcę stworzyć aplikacje Bankomatu, jest to generalnie zadanie z kanału na YT Samuraj programowania. Polega ono na tym, aby stworzyć bankomat, który będzie pierw pytać o numer karty, która będzie wcześniej gdzieś już zdefiniowana w kodzie, a następnie będzie można na niej przeprowadzać operacje(Wpłata, wypłata, saldo). Nie jestem w stanie wymyślić jak zrobić, aby wpisany numer karty odwoływał się do którejś z nich. Na początku próbowałem to zrobić zwyczajnie na zasadzie nowych instancji klasy: Karta karta1 = new Karta(...) itd. Teraz aktualnie próbuje to zrobić za pomocą ArrayListy i tak samo utknąłem. Naprawdę nie jestem wstanie znaleźć rozwiązania mojego problemu, czy ktoś by był w stanie mi to w miarę prosto wytłumaczyć? Javy uczę się dopiero 2 tygodnie. Konto na tym portalu założyłem specjalnie żeby zadać to pytanie.

package Zadania;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Bankomat {


    public static void main(String[] args) {
        List<Karta> Karty = new ArrayList<Karta>();

        Karty.add(new Karta(001, "Richard Hammond", 4000));
        Karty.add(new Karta(002, "John Doe", 3000));
        Karty.add(new Karta(003, "Sabrina Spellman", 56000));
        Karty.add(new Karta(004, "Lois Griffin", 4200));
        Karty.add(new Karta(005, "Peter Griffin", 4500));
        Karty.add(new Karta(006, "Joe Swanson", 1200));

        Scanner s = new Scanner(System.in);

        int numer = s.nextInt();


         ```
Jeśli będzie potrzeba mogę też wkleić kod z klasy Karta.

Z góry dziękuje za pomoc.
1

@Heshu: z tego co rozumiem to potrzebujesz użyć po prostu Mapy...
Ps.
Sugeruje nie używac polskiego nazewnictwa

0
scibi92 napisał(a):

@Heshu: z tego co rozumiem to potrzebujesz użyć po prostu Mapy...
Ps.
Sugeruje nie używac polskiego nazewnictwa

Myślałem o tym żeby jej użyć, ale czy jest to jedyne wyjście z tej sytuacji?
Rozumiem z tym Polskim nazewnictwem, staram się odzwyczaić od tego.

0

Rozumiem, że masz listę kart i chcesz wprowadzić numer i na podstawie tego numeru wyciągnąć kartę z listy?
Jesteś na dobrej drodze, teraz musisz po prostu przeiterować po wszystkich elementach swojej listy Karty i sprawdzić czy ID danej karty jest równe wprowadzonemu użytkownika. Jeżeli tak, to znalazłeś szukaną kartę.

0

@Emdzej93:

Emdzej93 napisał(a):

Rozumiem, że masz listę kart i chcesz wprowadzić numer i na podstawie tego numeru wyciągnąć kartę z listy?
Jesteś na dobrej drodze, teraz musisz po prostu przeiterować po wszystkich elementach swojej listy Karty i sprawdzić czy ID danej karty jest równe wprowadzonemu użytkownika. Jeżeli tak, to znalazłeś szukaną kartę.

Wcześniej próbowałem pętli for i iteracji, lecz właśnie nie wiedziałem, po jakiej metodzie mogę się odwołać do tej zmiennej? Chodzi mi dokładnie o ten moment:

int numer = s.nextInt();
        for(int x = 0; x < Karty.size(); x++) {
            if(numer == Karty.??{
                
        } 
1
Karty.get(x).getCardNumber()

get(x) zwraca element tablicy Karty o indexie x
getCardNumber() to metoda wewnątrz klasy Karta która zwraca numer tej karty

0
Emdzej93 napisał(a):

Rozumiem, że masz listę kart i chcesz wprowadzić numer i na podstawie tego numeru wyciągnąć kartę z listy?
Jesteś na dobrej drodze, teraz musisz po prostu przeiterować po wszystkich elementach swojej listy Karty i sprawdzić czy ID danej karty jest równe wprowadzonemu użytkownika. Jeżeli tak, to znalazłeś szukaną kartę.

Tylko po co korzystać z takich udziwnień jak możn użyć Mapy czyli typu danych który to tego służy?

0

@Emdzej93:

Emdzej93 napisał(a):
Karty.get(x).getCardNumber()

get(x) zwraca element tablicy Karty o indexie x
getCardNumber() to metoda wewnątrz klasy Karta która zwraca numer tej karty

Właśnie tego nie wiedziałem. Dzięki bardzo teraz mogę ruszyć dalej ;-)

1

@Heshu: A ja dalej nie wiem czemu chcesz korzystać z tej Listy skoro to tego służy Mapa. Ja wiem że jesteś początkujący, ale warto ogarniać prawidłowe podejście jak najwczesniej (oczywiście w granicach rozsądku)

0

@scibi92:

scibi92 napisał(a):

@Heshu: A ja dalej nie wiem czemu chcesz korzystać z tej Listy skoro to tego służy Mapa. Ja wiem że jesteś początkujący, ale warto ogarniać prawidłowe podejście jak najwczesniej (oczywiście w granicach rozsądku)

Posłuchałem się wcześniej już twojej rady dotyczącej Mapy i jak uda mi się skończyć tą wersje tej aplikacji, to będę próbować zrobić to samo z mapą. Tylko wtedy przy definiowaniu mapy jaką wartość miałbym wprowadzić w Key? Musiałbym usunąć tą zmienną numer karty z klasy Karta?

1

Mógłbyś, ale nie musisz. Generalnie Mapa poza tym że jest dobra do trzymania pary klucz-wartość bo to tego została stworzona, to ma jeszcze lepszy performance, tzn złożonośc obliczeniowa na ogół jest dużo niższa niz przelecenie po liście (mam na myśli HashMape, bo TreeMap to juz nie tak lekko :D )

0

@scibi92:

scibi92 napisał(a):

Mógłbyś, ale nie musisz. Generalnie Mapa poza tym że jest dobra do trzymania pary klucz-wartość bo to tego została stworzona, to ma jeszcze lepszy performance, tzn złożonośc obliczeniowa na ogół jest dużo niższa niz przelecenie po liście (mam na myśli HashMape, bo TreeMap to juz nie tak lekko :D )

Napisałem teraz wersję z HashMap i rzeczywiście jest o wiele krótsza i szybsza. Nie mniej jednak obie formy działają i każda z nich mi się do czegoś przyda na swój sposób, dzięki bardzo za pomoc :D Gdybyś chciał jeszcze zobaczyć mój kod działający to mogę wysłać, ale tak nie chce zaśmiecać tu.

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