Dostęp do danych obiektu

0

Cześć staram sie napisać kosolową gre typu jednoręki bandyta. Chce stworzyc mozliwosc zrobienia konta oraz wpłaty kasy, problem jest taki że po tym jak stworze konto i wpłacę kase nie mam potem do tego dostępu, tzn kiedy użyję metody player.getMoney(); zawsze pokazuje zero. Ktoś może mi powiedziec co źle zrobiłem ? Wiem, że parę rzeczy należy tu poprawić ale chciałbym się skupić na razie jedynie na danych.

class PlayerView {

    private PlayerSetings playerSetings = new PlayerSetings();
    private Scanner scanner = new Scanner(System.in);
    private int input;

    void player() {

        do {
            System.out.println(" 1 = Create account, 2 = Your debit, 0 = back");

            input = scanner.nextInt();
            if (input == 1) {
                String name;
                int money;
                System.out.print("Name: ");
                name = scanner.next();
                System.out.println();
                System.out.println("Money between 0 to 100: ");
                money = scanner.nextInt();
                System.out.println();

                playerSetings.setPlayer(money, name);
            }if (input == 2)
                playerSetings.showDebit();

        } while (input == 0);
    }
}

public class PlayerSetings {

    private Player player = new Player();


    public void setPlayer(int money, String name) {


        if (money > 0 && money < 100 && name != null) {
            player.setMoney(money);
            player.setName(name);
            System.out.println("Acoount name: " + player.getName() + " debit: " + player.getMoney());
            System.out.println();
        } else
            System.out.println("Incorrect data");

    }

    public void showDebit() {
        System.out.println("Debit: " + player.getMoney());

    }


}

class Player {


    Player() {
    }

    private String name;
    private int money;


    String getName() {
        return name;
    }

    void setName(String name) {
        this.name = name;
    }

    int getMoney() {
        return money;
    }

    void setMoney(int money) {
        this.money = money;
    }
}

0

a player.getName() zwraca poprawną wartość?
BTW dlaczego nie użyjesz debbugera?

0

Zwraca null, powalczę z debugerem ale myślę że błąd mam gdzieś w modzie i nie mogę dojść gdzie

0

a zmień void setName(String name) na np. void setName(String n) i potem this.name = n; i analogicznie z money.
BTW ja tam nie jestem w stanie dostrzec błędu

1

@kkolej: W Twoim programie bruździ warunek w metodzie player():

while (input == 0)

Po prostu gdy tworzysz konto to input == 1 więc warunek nie jest spełniony i pętla wykonuje się tylko raz po czym program się kończy i Twoje dane przepadają. Dlatego gdy odpalasz drugi raz i chcesz sprawdzić saldo konta to wynosi ono 0.
Żeby to rozwiązać możesz zmienić warunek na:

while (input != 0)

i wtedy program faktycznie będzie się kończył gdy wpiszesz 0, albo zapisywać Twoje dane do jakiejś bazy i potem je pobierać gdy zajdzie taka potrzeba.

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