Создает сразу 2 объекта

Задача: создать объект, при вводе пользователем символа "1".

Фрагмент кода класса Basket:

public class Basket extends Item{

    private int ID;
    private static int nextID = 1;
    static Basket basket = new Basket();

    public void createBasket() {
        basket = new Basket();
    }
}

Фрагмент кода класса Menu:

public class Menu extends Basket{

public void authorisation(ArrayList<Personal> arr) {

    private String userName;
    private String password;
    private byte menuAction;

        while (true) {
            System.out.print("Username: ");
            userName = input.nextLine();
            System.out.print("Password: ");
            password = input.nextLine();


            for (int i = 0; i < arr.size(); i++) {
                if (arr.get(i).getUserName().equals(userName) && arr.get(i).getPassword().equals(password)) {
                    startMenu();
                }
            }
            System.out.println("Wrong username or\\and password.\n\r" +
                    "Please, type again.\r\r");
        }
    }

public void startMenu() {

        while (true) {
            System.out.println("\n\rPlease, choose action: \n\r" +
                    "   1) New Basket\n\r" +
                    "   2) Insert item in basket\n\r" +
                    "   3) Remove item from basket\n\r" +
                    "   4) Print information for basket with a certain ID\n\r" +
                    "   5) Apply discount to basket with 10% for Christmas promotion\n\r" +
                    "   6) Exit");
            System.out.println(basket.getIDBasket());
            System.out.println(basket.getNextID());
            menuAction = input.nextByte();
            switch (menuAction) {
                case 1:
                    createBasket();
                    break;
                default:
                    System.out.println("Wrong input!");
                    break;
            }
}

Вопрос:

  1. почему когда я запускаю программу, у меня создается Basket. То есть getIdBasket уже = 1, хотя я еще не создавал его, должно быть null, по идеи.
  2. Когда нажимаешь 1 - id basket становится 3, то есть когда то успел создаться второй Basket. После, идет по порядку id=4, 5, 6.. В чем проблема, почему перескакивает?

Id 1, Id 3

Надеюсь понятно объяснил, сам толком не понимаю как сформулировать эту мысль.

Благодарю за помощь!


Ответы (1 шт):

Автор решения: fox

попробуйте так, не то вы 2 раза basket создали. public class Basket extends Item{

    private int ID;
    private static int nextID = 1;
    static Basket basket;

    public void createBasket() {
        basket = new Basket();
    }
}
→ Ссылка