• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java, logowanie i rejestracja

Object Storage Arubacloud
0 głosów
556 wizyt
pytanie zadane 27 stycznia 2022 w Java przez JanK Nowicjusz (120 p.)

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");
        }
    }

 

komentarz 27 stycznia 2022 przez Wiciorny Ekspert (269,710 p.)
Każdy twój obiekt AddUser ma własną tablice, więc dodająć jakiś element -> do obiektu, potem wywołując np metode Login operujesz na innym obiekcie i innej tablicy...

Popraw kod, bo to razi w oczy : klasy piszemy z dużej, natomiast obiekty z małej

1 odpowiedź

+1 głos
odpowiedź 27 stycznia 2022 przez DziQu Początkujący (420 p.)
Chyba porwałeś się trochę z motyką na słońce,

po 1 -> Zacznij od początku zwracać uwagę na nazwy zmiennych, od początku rób sobie dobry nawyk, nie wiadomo co to jest l oraz h mogę się domyślać że chodzi o login i hasło ale uwierz mi, im szybciej zaczniesz zwracać na to uwagę tym lepiej.

po 2 ->  Mniej więcej to samo co up, tyle że z klasami, do czego ma służyć klasa Get ? Oraz AddUser ? Przykładowo taki AddUser powinien nazywać się po prostu User z polami na login oraz hasło, dodatkowo klasa UserRepository np. która będzie Ci trzymała listę tych użytkowników i metody do dodawania usera do "bazy" w tym przypadku listy.

po 3 -> Zerknij sobię na metodę Login z AddUser, dodajesz tam z jakiegoś powodu konto "Admina" za każdym razem gdy się próbujesz logować

Ogólnie wymieniać można tu dużo, podpowiem Ci tylko że jeśli już bardzo chcesz to wykonać to powinno wyglądać to mniej więcej tak:

Class User -> Pola login oraz hasło / gettery oraz settery

Class UserRepository -> Pola z lista <User> oraz dodatkowa metoda add(User user) w tej klasie która doda użytkownika do listy

Class UserService -> 2 metody, mogące zwracać boolean w celu potwierdzenia czy operacja została dobrze wykonana czy nie, 1 -> addUser(String login, String Password) wywołujesz tutaj metodę add z UserRepository dzięki czemu dodasz użytkownika do swojej "bazy" repository.add(new User(login, password)); 2-> loginUser też zwracająca boolean'a który określi czy dane wprowadzone są poprawne, iterując po liście użytkowników sprawdzasz czy wpisany login oraz hasło pasuje do jakiegoś zapisanego użytkownika.

To tak w skrócie co mogę doradzić i podpowiedzieć. Przerób sobie jakieś podstawowe kursy odnośnie programowania obiektowego, tworzenie obiektów konstruktorów i myślę że sobie poradzisz, od siebie co mogę polecić to kursy na platformie JavaStart :)

P.S Nie zniechęcaj się tylko, początki zawsze są trudne :)
1
komentarz 27 stycznia 2022 przez Wiciorny Ekspert (269,710 p.)
Class User -> Pola login oraz hasło / gettery -> takie klasy powinny być immutable, więc lepiej nauczyc od razu nie pisać seterów

Podobne pytania

0 głosów
1 odpowiedź 432 wizyt
pytanie zadane 2 grudnia 2018 w PHP przez jakubmark Początkujący (370 p.)
+16 głosów
5 odpowiedzi 751 wizyt
0 głosów
0 odpowiedzi 218 wizyt

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...