java logowanie i rejestracja

0

Siemka.
zacząłem się uczyć programować w javie, i chciałem sobie sam napisać program w którym potrzebuje rejestracji i logowania.
Wszystko byłoby ok, ale jak dodaje do listy użytkownika, to kasuje się od razu po tym jak dodaje.
Poniżej załączam kod, z góry dzięki za pomoc :)

main.java

package com.company;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        get Get = new get();
        boolean sContinue=false;
        while(!sContinue) {
        System.out.println("wybierz opcje");
        System.out.println("1-login");
        System.out.println("2-dodaj");
        System.out.println("3-stop");
        int choose= scanner.nextInt();

        switch(choose)
        {
            case 1-> Get.login();
            case 2-> Get.Add();
            case 3->sContinue=true;
        }
    }
    }
}

get.java

package com.company;

import java.util.Scanner;

public class get {
    static Scanner scanner = new Scanner(System.in);
    public void login(){
        System.out.println("podaj login");
        String login= scanner.nextLine();
        System.out.println("podaj haslo");
        String haslo= scanner.nextLine();


        AddUser add = new AddUser(login, haslo);

        add.Login(login,haslo);

    }
    public void Add(){
        boolean sContinue=false;
        while(!sContinue) {
            System.out.println("podaj login");
            String login = scanner.nextLine();
            System.out.println("podaj haslo");
            String haslo = scanner.nextLine();
            System.out.println("podaj haslo");
            String hasloo = scanner.nextLine();
            if (haslo.equals(hasloo)) {
                AddUser add = new AddUser(login, haslo);
                add.add(login, haslo);
                sContinue=true;
            }else{
            System.out.println("hasła są niezgodne");
            }
        }

    }
}

AddUser.java

package com.company;

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

import java.util.Scanner;


public class AddUser {

    Scanner scanner = new Scanner(System.in);
    private List<AddUser> user=new ArrayList<>();

    private String Login;
    private String Password;
    public AddUser(String login, String password) {
        this.Login = login;
        this.Password = password;
    }
    public void add(String l, String h){

        AddUser us = new AddUser(l,h);
        for (AddUser user: user) {
            System.out.println(user.Login);
        }
        user.add(us);

    }


    public void Login(String l, String h){
        AddUser admin = new AddUser("Admin", "zaq12wsx");
        user.add(admin);
            for (AddUser user: user) {
                if (user.Login.equals(l)&user.Password.equals(h)){
                System.out.println("zalogowano");
            }
                }
            System.out.println("złe hasło lub login");
        }
    }
1

Ten kod to jest jakaś incepcja ciężko zrozumieć co tu wgl się dzieje i wątpie, że się kompiluje.

2
public void login(){
    System.out.println("podaj login");
    String login= scanner.nextLine();
    System.out.println("podaj haslo");
    String haslo= scanner.nextLine();

    AddUser add = new AddUser(login, haslo);

    add.Login(login,haslo);

}

Tworzysz referencję do użytkowników, dodajesz do niej login i hasło a potem co się dzieje po wyjściu z metody? :)
W ogóle nie nazywaj tak tego - AddUser to się kojarzy z dodawaniem użytkowników a nie z listą użytkowników.

Ogólnie to cały kod jest straszny i zły. Skasuj.

Do przechowywania użytkowników zrób coś ala UserRepository z jakąś mapą np. Map<Integer, User> users = new ConcurrentHashMap();
Tam by były metody jak addUser(User user).

Na wprowadzanie danych zrób klaskę np. InputService, gdzie byś miał coś ala printQuestion, getUserInfo.

To wszystko można wrzucić do jakiegoś serwisu i z poziomu niego wywoływać. Najlepiej oddzielny serwis do do resestracji a oddzielny do logowania.

To wszystko zapakuj do fasady która wystawi już docelowy interfejs z którego będzie korzystał programista np.:

SystemFacade facade = new SystemFacade();

To tak na szybko i w skrócie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.