Problem z nazwaniem zmiennej w konstruktorze – nie chce jej wczytać z klawiatury

0
    public static void main(String[] args) {
        Scanner odczyt = new Scanner(System.in);
        System.out.println("Podaj login");
        String login = odczyt.nextLine();
        System.out.println("Podaj haslo");
        String haslo = odczyt.nextLine();
        Konto login = new Konto(); // dlaczego nie moge uzyc zmiennej login - czyli takiej jaką sobie wpisze z klawiatury

    }
    
}
class Konto
{
    Konto()
    {
        String napis;
    }
}
1

Masz dwie zmienne login (2 zmienne o tej samej nazwie) w tym samym zakresie stąd błąd. Pierwsza jest typu String a druga typu Konto
Piszesz w notatniku, że Ci nie wyświetla informacji o błędzie? Bo jakby Ci wyświetlało to jest tam czarno na białym napisane co jest nie tak.

0

@Manuel.Artificer: może się nie znam na Javie, ale czy przypadkiem takie działanie nie nazywa się napisaniem zmiennej? W stylu

Int zmienna = 5;
String zmienna = "a jednak zmieniłem zdanie" 

Bo mi akurat takie napisanie zmiennej wraz ze zmianą typu wygląda jak najbardziej w porządku. Ale jak już pisałem nie znam się na Javie, czy obecnie faktycznie jest taki limit? Że w jednym scope nie moga istnieć dwie zmienne o takiej samej nazwie (jak już pisałem poprzez napisanie typu i wartości)?

EDIT:
Faktycznie - IDE pokazuje od razu, no i w sumie ma to sens :) Cofam powyższe dywagacje i pytania :)

0

No ja wiem , ze nie moge uzyc 2 razy takiej samej zmiennej. Ale własnie nie rozumiem dlaczego program bierze to jako dublowanie , przeciez :

System.out.println("Podaj login");
String login = odczyt.nextLine();
Konto login = new Konto(); // dlaczego nie moge uzyc zmiennej login - czyli takiej jaką sobie wpisze z klawiatury

wtedy zmienna login przyjmuje wartosc jaką wpisałem z klawiatury

2

Musiałem to 3 razy przeczytać, żeby to w końcu zrozumieć. Ale Ty kombinujesz. Ale dla upewnienia się jeszcze się zapytam czy na pewno to to:

String login = "adam";
Konto login = new Konto(); - > Konto adam = new Konto();

Jeżeli o to chodzi no to Java to język statyczny, więc typy oraz nazwy zmiennych muszą być znane w czasie kompilacji, a jakbyś zrobił coś takiego no to nazwę tej zmiennej określałbyś dopiero w czasie działania programu no i przez to nie można. Poza tym jakbyś się później chciał odwoływać do tej zmiennej? Taki zapis jest totalnie bez sensu, bo tak czy tak musiałbyś używać słowa "login".

1

Jasne, że się da. Tworzysz sobie kolekcję np. słownik (w Javie slownikowi odpowiada chyba typ Map, ale nie jestem pewien, jak coś to niech ktoś mnie poprawi). No i w tym słowniku kluczem będzie login o ile jest unikalny np. email, a wartością obiekt typu Konto.

Potem tworzysz obiekt konto i dodajesz do tego słownika. A jak chcesz potem wyświetlić dane wybranego użytkownika, to wyszukujesz go w tym słowniku po kluczu

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