Benutzer-Login Simulation

graai

Mitglied
Hallo, wir solln wieder eine neues Programm/Aufgabe bearbeiten, aber ich stehe wieder auf dem Schaulch, weil ich die Klasse Scanner noch nicht verwendet hatte. Können Sie mir bitte Gedankenanstöße geben? Das wäre so nett.

Anbei die Aufgaben:

Erstellen Sie ein Java-Programm, das eine einfache Benutzer-Login-Simulation durchführt. Das Programm wird so aufgebaut, dass es einen festgelegten Benutzernamen und ein Passwort überprüft.

Anforderungen:

Definieren Sie einen vordefinierten Benutzernamen und ein Passwort im Programm. Diese Werte sollten direkt im Code hinterlegt werden.
Bitten Sie den Benutzer, seinen Benutzernamen und sein Passwort einzugeben.
Überprüfen Sie, ob der eingegebene Benutzername und das Passwort mit den festgelegten Werten übereinstimmen.
Geben Sie eine entsprechende Nachricht aus:
Falls die Eingaben korrekt sind: "Login erfolgreich"
Falls die Eingaben falsch sind: "Ungültiger Benutzername oder Passwort"

Zusatzanforderungen:

Falls der Benutzer dreimal hintereinander falsche Anmeldedaten eingibt, geben Sie die Nachricht „Zu viele Fehlversuche. Programm wird beendet.“ aus und beenden das Programm.
 

KonradN

Super-Moderator
Mitarbeiter
ich stehe wieder auf dem Schaulch, weil ich die Klasse Scanner noch nicht verwendet hatte
Sollt Ihr etwas anderes nutzen oder ist es einfach nur, dass DU es noch nicht benutzt hast?

@Robert Zenz hat Dir Links gegeben zur Dokumentation und zu diversen Beispielen.

Was die Aufgabe angeht: Da kannst Du ja einmal in Worten formulieren, was da zu tun ist. Kannst Du es so im Detail formulieren, dass jemand anderes, der die Aufgabe selbst nicht kennt nach Deiner Anleitung machen könnte?
 

graai

Mitglied
Die Links habe ich mir auch an gesehen und vielen Dank da für, aber ich verstehe einfach nicht wie ich anfangen soll. Ohne Lüge sitze ich jetzt seit etwa 1 bis 2 Stunden an diesem dämlichen Aufgabe und komme nicht weiter. Wenn ich das Passwort groß schreibe dann geht mein Programm ab. :(
 

graai

Mitglied
Hier sind meine Versuche bis jetzt...

Java:
import java.util.Scanner;

public class HelloWorld{

     public static void main(String []args){
        Scanner scanME = new Scanner( System.in );
        var username = scanME.nextInt("Benutzername:");
        var password = scanME.nextInt("Passwort:");
        if (username == "Benutzer" & password == "Passw") {
            System.out.print("richtig");
        }
        else {
            System.out.print("falsch");
            main( args );
        }
}
    
}
 

KonradN

Super-Moderator
Mitarbeiter
Strings Sind Objekte und die werden nicht mit == verglichen sondern mit equals. Ein == prüft nur, ob die Referenzen gleich sind und nicht auf den Inhalt. Also sowas wie „Benutzer“.equals(username)

Die Anführungszeichen macht das Handyy falsch - das müssen natürlich die Quotes eines String Literals sein!
 

KonradN

Super-Moderator
Mitarbeiter
Ach so … nextInt liest einen int Wert und kein String. Du willst also next() oder nextLine() verwenden.

Edit: und die Methoden haben keinen Parameter …

Auf dem Smartphone hat man keinen Überblick … aber das waren dann jetzt drei Punkte und aller guten Dinge sind drei … das war es also hoffentlich :)
 

graai

Mitglied
Wie kann ich es machen da mit er nach dreimal verschwindet?

Java:
import java.util.Scanner;
import java.util.Objects;

public class HelloWorld{
    public static String user = "1";
    public static String pw = "2";
     public static void main(String []args){
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
        }
        else {
            System.out.print("falsch");
            main( args );
        }
}
    
}
 

KonradN

Super-Moderator
Mitarbeiter
Hast du denn mal versucht, es in Worte zu fassen? Stell es Dir bildlich vor.

Da ist ein Mitarbeiter, der nur Dienst nach Vorschrift macht und du musst ihm alles vorgeben. Er merkt sich auch nichts, was er sich nicht aufschreiben sollte.

Und nun soll der den Empfang besetzen. Leute müssen das Codewort sagen, dann kommen sie rein. Nach drei falschen Versuchen werden die weggeschickt.

Kriegst du die Anweisung hin?
 

KonradN

Super-Moderator
Mitarbeiter
nicht so richtig leider, ich habe keine Idee da zu :(
Woran scheitert es? Kannst Du denn diverse Szenarien durchspielen, was passieren soll, wenn:
1) sofort die richtigen Werte eingegeben werden
2) nach einem Fehlversuch die richtigen Werte eingegeben werden
3) nach zwei Fehlversuchen die richtigen Werte eingegeben werden
4) drei mal falsche Werte eingegeben werden

Im Augenblick sehe ich nicht wirklich, wo das Problem ist. die fachliche Anforderung sollte doch klar sein. Und das solltest Du doch auch durchspielen können. Wo ist das Problem?

Diese Thematik kannst Du doch durchspielen Geheimagent graai:
Du bist Geheimagent und fragst nach der Parole ... Parole ist falsch ... Du zählst innerlich "1".
Du fragst erneut ... Parole wieder falsch ... zu zählst "2"
Du fragst erneut ... Parole wieder falsch ... Du erschießt den offensichtlich feindlichen Agent denn Du hast ja die Lizenz zu töten!

Und sowas kannst Du zur Not direkt umsetzen ohne Schleife:
Code:
Frage Parole
Ist Parole falsch dann
   Frage Parole
   Ist Parole falsch dann
     Frage Parole
     Ist Parole falsch dann
       erschieße Gegenüber
      
Parole war richtig und du lässt den Agenten durch.

Aber natürlich kannst Du es als Schleife formulieren ... Du hast ja schon alle Daten ... Du hast eine Schleife so lange wie die Parole falsch ist. Und immer wenn die Eingabe falsch war, steigt die Anzahl der Versuche ... Und wenn die Anzahl der Versuche einen bestimmten Wert erreicht, dann passiert etwas....

Hier geht es also nicht um Java. Es geht darum, Abläufe zu visualisieren. Denk Dir dazu Szenarien aus, die Du Dir gut vorstellen kannst und die nicht abstrakt sind. So wie das Szenario mit dem Geheimagent.
 

graai

Mitglied
Woran scheitert es? Kannst Du denn diverse Szenarien durchspielen, was passieren soll, wenn:
1) sofort die richtigen Werte eingegeben werden
2) nach einem Fehlversuch die richtigen Werte eingegeben werden
3) nach zwei Fehlversuchen die richtigen Werte eingegeben werden
4) drei mal falsche Werte eingegeben werden

Im Augenblick sehe ich nicht wirklich, wo das Problem ist. die fachliche Anforderung sollte doch klar sein. Und das solltest Du doch auch durchspielen können. Wo ist das Problem?

Diese Thematik kannst Du doch durchspielen Geheimagent graai:
Du bist Geheimagent und fragst nach der Parole ... Parole ist falsch ... Du zählst innerlich "1".
Du fragst erneut ... Parole wieder falsch ... zu zählst "2"
Du fragst erneut ... Parole wieder falsch ... Du erschießt den offensichtlich feindlichen Agent denn Du hast ja die Lizenz zu töten!

Und sowas kannst Du zur Not direkt umsetzen ohne Schleife:
Code:
Frage Parole
Ist Parole falsch dann
   Frage Parole
   Ist Parole falsch dann
     Frage Parole
     Ist Parole falsch dann
       erschieße Gegenüber
     
Parole war richtig und du lässt den Agenten durch.

Aber natürlich kannst Du es als Schleife formulieren ... Du hast ja schon alle Daten ... Du hast eine Schleife so lange wie die Parole falsch ist. Und immer wenn die Eingabe falsch war, steigt die Anzahl der Versuche ... Und wenn die Anzahl der Versuche einen bestimmten Wert erreicht, dann passiert etwas....

Hier geht es also nicht um Java. Es geht darum, Abläufe zu visualisieren. Denk Dir dazu Szenarien aus, die Du Dir gut vorstellen kannst und die nicht abstrakt sind. So wie das Szenario mit dem Geheimagent.

Jetzt hat es endlich Klick gemacht! :) Ich Danke ihnen:

Java:
import java.util.Scanner;
import java.util.Objects;

public class HelloWorld{
    public static String user = "1";
    public static String pw = "2";
     public static void main(String []args){
         scan:
         {
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
        }
         }
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
        }
         }
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
            System.out.print("Drei Versuche aufgebraucht!");
        }
         }
         }
}
}
 

graai

Mitglied
Ja, die Klammernsetzung könnte noch anders sein. Aber ich werde das so abgeben, denn der Lehren sagt sonst ich haben nicht selbst gemacht.
 

KonradN

Super-Moderator
Mitarbeiter
Aus meiner Sicht solltest Du hin gehen und Dir das Vorgehen überlegen. Das ist ein generelles Vorgehen und das wirst Du bei jeder Aufgabe benötigen. Daher sollte es unabhängig von der Aufgabe etwas sein, das Du übst.

Also immer erst einmal im Detail erfassen, was zu tun ist. Das kannst Du ganz ausführlich machen.

Erst dann kommt die Umsetzung.

In einem anderen Thread hatte ich es schon im Detail beschrieben und auch ausgeführt, dass es ein übliches Vorgehen ist. Also auch wenn es am Anfang evtl. womöglich umständlich oder kindlich erscheint: Das ist das Vorgehen! (Klar, später geht man nicht mehr so sehr ins Detail. Das ist einfach unnötig. Aber die fachlichen Bedingungen und Abläufe werden klar durchgesprochen, denn das muss verstanden sein. Erst wenn klar, was genau passieren soll, kann man etwas implementieren!

Daher muss ich ganz deutlich sagen: Es geht darum, dass DU die Lösung selbst erarbeitest. Es kommen von mir nur Hinweise, die Dich dazu in die Lage bringen sollen.

Aber man kann auch überlegen, ob man nicht Deinen Code nimmt und Refactorings erklärt. Aber das dürfte am Anfang schlicht zu viel sein, wenn die Java Syntax noch Probleme bereitet. (Refactorings ist das Umschreiben von Code, in der Regel um diesen "sauberer" zu machen. Stichwort Clean Code)
 

graai

Mitglied
Und jetzt wierd mir auch einlautchen wes halb Deutschland in Sache Digitalisierung schlecht ist.
Denn die Abläufe sind nicht verstanden worden. Nur wer die Abläufe ganz genau verstehen tut, kann programmieren und darf das auch. Aber viele verstehen die Abläufe noch nicht so gut und deshalb machen sie falsch programmieren. Es dauert noch bissl, bis alle die Abläufe vollständig verstanden haben und dann programmieren können. Es ist wichtig, dass die Leuten viel üben, um sicherer zu werden. Manchmal, wenn sie versuchen zu lernen, sind sie verwirrt und fragen sich, wie die Sachen funktionieren. Wenn das so ist, sollten sie mehr fragen und hilfe suchen, anstatt alleine zu kämpfen. Das lernen ist nicht einfach, aber mit der zeit kommen sie besser klar. Wenn alle zusammenarbeiten und sich gegenseitig helfen, wird es viel leichter sein, die Abläufe zu kapieren und dann machen sie weniger fehler. Also nicht aufgeben und weiter aus probieren!
 

KonradN

Super-Moderator
Mitarbeiter
Also im Augenblick weiss ich nicht, worauf Du hinaus willst.

Erst einmal scheint mir, dass Du die Aussage mit Verständnis der Abläufe missverstanden hast. Damit ist schlicht gemeint, dass Du nur etwas automatisieren oder programmieren kannst, wenn Du weisst, was der Lösungsweg ist. Klar kannst Du Dich ins Auto setzen und einfach herum fahren. Aber wenn Dein Chef gesagt hat: "fahre nach München" und Du hast dies einfach nicht verstanden, dann sollte klar sein: Ins Auto setzen und einfach herum fahren um dann hin und wieder anzuhalten und zu fragen: "Bin ich hier richtig?" ist nicht zielführend. Klar, es kann sein, dass Du ganz durch Zufall in München am gewünschten Ziel landen wirst, aber da ist Wahrscheinlichkeit vermutlich nicht sehr gross.

Daher habe ich versucht, klare Hilfen zu geben. Diese kannst Du annehmen oder Du kannst es sein lassen. Man kann diskutieren, ob überhaupt die Erwähnung irgendwelcher weiterführender Punkte sinnvoll ist oder nicht. Die Erwähnung des Stichwortes Clean Code war ganz offensichtlich nicht zielführend wie Deine Reaktion zeigt. Aber nein, ich kann Dir versichern, dass Clean Code nichts damit zu tun hat, wie gut Deutschland in Sachen Digitalisierung ist.

Ansonsten ist die Ausführung mit dem Lernen und Üben für mich etwas ohne Kontext: Denn Du hast auf Deine Probleme doch Antworten bekommen. Du hast Hilfestellungen bekommen. Was genau erwartest Du anderes?
 

Ernesto95

Aktives Mitglied
Jetzt hat es endlich Klick gemacht! :) Ich Danke ihnen:

Java:
import java.util.Scanner;
import java.util.Objects;

public class HelloWorld{
    public static String user = "1";
    public static String pw = "2";
     public static void main(String []args){
         scan:
         {
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
        }
         }
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
        }
         }
         {
        Scanner scanME = new Scanner( System.in );
        var username = String.valueOf(scanME.nextInt());
        var password = String.valueOf(scanME.nextInt());
        if ( (Objects.equals(username , user)) && (Objects.equals(password , pw)) ) {
            System.out.print("richtig");
            break scan;
        }
        else {
            System.out.print("falsch");
            System.out.print("Drei Versuche aufgebraucht!");
        }
         }
         }
}
}

Um mal einen Bogen zu schlagen von dem Auto aus Kontads Post zu deinem Code.

Du setzt dich Montags morgens ins Auto und fährst zur Arbeit. Dienstags machst du das gleiche. Den Rest der Woche ebenso.

Ich denke nicht das du jeden morgen zu Fuß zum Autohaus läufst und dir ein neues Auto kaufst. Nein, du nutzt ein und dasselbe Auto.

In deinem Code aber kaufst du sinnbildlich bei jedem Login Versuch ein neues Auto, denn du schreibst den identischen Code immer und immer wieder. Wiederkehrender Code solle immer in eine externe Methode ausgelagert werden. Und diese kannst du dann so oft du willst aufrufen.

Dein Auto sagt dir regelmäßig das es zur Inspektion muss. Woher weiß es das ? Weil es intern im Auto versteckt irgendwo einen Zähler gibt der bei jeder Inspektion auf 0 gesetzt wird und der sich 365 Tage später meldet.

Also, Zähler implementieren, bei jedem fehlerhaften Login versuch um 1 hochzählen und bei 3 fehlerhaften versuchen daa programm abbrechen
 

mihe7

Top Contributor
Achtung: völlig OT

Und jetzt wierd mir auch einlautchen wes halb Deutschland in Sache Digitalisierung schlecht ist.
Puh, da können wir aber froh sein, dass der Autor des Buchs, das Clean Code populär gemacht hat ("Clean Code: A Handbook of Agile Software Craftsmanship") aus den USA kommt...

Dass Deutschland in Sachen Digitalisierung schlecht ist, ist in der Pauschalität auch nicht richtig und dort, wo es stimmt, liegt es entweder am Fachkräftemangel, am Föderalismus/der kommunalen Selbstverwaltung, an einem völlig anderen Verständnis von "Wirtschaften" als z. B. in den USA oder schlicht an Entscheidern, die von Tuten und Blasen keine Ahnung haben. Woran es mit Sicherheit nicht liegt, ist aber Clean Code.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
U Interface Schriftfarbe von Benutzer anders als vun Computer/Code Java Basics - Anfänger-Themen 6
S Den Benutzer eine Rangfolge festlegen lassen Java Basics - Anfänger-Themen 5
L Vom Benutzer eingebene Integer addieren und ausgeben. Java Basics - Anfänger-Themen 11
S Array - index von Benutzer eingegebenen char ausgeben Java Basics - Anfänger-Themen 3
w0ddes In JTable Reihen programmatisch Auswählen aber für Benutzer sperren Java Basics - Anfänger-Themen 17
B Uhrzeit vom Benutzer eingeben lassen. Java Basics - Anfänger-Themen 5
X Nach Benutzer Eingabe..? Java Basics - Anfänger-Themen 4
jgh (Benutzer) Rollen in Java Java Basics - Anfänger-Themen 3
B Alle Benutzer anzeigen Java Basics - Anfänger-Themen 17
T Variable durch Benutzer festsetzen? Java Basics - Anfänger-Themen 16
T mehrere Benutzer greifen auf Textdateien zu Java Basics - Anfänger-Themen 3
M Arrays vom Benutzer einlesen Java Basics - Anfänger-Themen 2
H Textpad > Benutzer-Programme für Java Java Basics - Anfänger-Themen 2
M Benutzer löschen mittels Netbeans Java Basics - Anfänger-Themen 4
TiME-SPLiNTER Programm nur durch Benutzer beenden Java Basics - Anfänger-Themen 15
G Schriftgröße vom Benutzer änderbar Java Basics - Anfänger-Themen 9
M was wenn der benutzer ein double statt int eingibt ? Java Basics - Anfänger-Themen 3
F Schleife verlassen wenn benutzer quit eingibt Java Basics - Anfänger-Themen 7
G HomeVerzeichnis von Benutzer ermitteln? Java Basics - Anfänger-Themen 3
M Rechnername und akt. Benutzer auslesen Java Basics - Anfänger-Themen 3
7 Benutzer kann Button bewegen Java Basics - Anfänger-Themen 4
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
Spitzli Java login mit hashed password Java Basics - Anfänger-Themen 11
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
N (Java) Regristrierung und Login System mit einer Datenbank Java Basics - Anfänger-Themen 5
M Ist es möglich den Login in eine Drittseite für den eigenen zu benutzen? Java Basics - Anfänger-Themen 1
E Klassen Login MVC Java Basics - Anfänger-Themen 4
M Erste Schritte Verschlüsselung / Login-Sicherheit Java Basics - Anfänger-Themen 8
K LogIn Programm Frage Java Basics - Anfänger-Themen 4
F Wegpage Login mit Java Java Basics - Anfänger-Themen 1
N Login-Authorization, Hilfe! Java Basics - Anfänger-Themen 4
P Login und Register screen Java Basics - Anfänger-Themen 5
M Login Mitschneiden Java Basics - Anfänger-Themen 3
Screen Wie Login auf einer Seite via Java? Java Basics - Anfänger-Themen 5
A Login Fenster Java Basics - Anfänger-Themen 3
Z Login Fenster Java Basics - Anfänger-Themen 7
E Methoden Login aber wie? Java Basics - Anfänger-Themen 12
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
B login fehler Java Basics - Anfänger-Themen 7
E HTTP Client - Login durchführen? Java Basics - Anfänger-Themen 4
N URLConnection Post Login Java Basics - Anfänger-Themen 8
M Login-Menü Java Basics - Anfänger-Themen 7
F Login Passwort-Vergleich Java Basics - Anfänger-Themen 12
H Browser-Login mit Chipkarte / Kartenlesegerät Java Basics - Anfänger-Themen 6
P Probleme mit Berechtigungen /Elsterportal login Java Basics - Anfänger-Themen 1
G Login funktioniert nicht! Java Basics - Anfänger-Themen 5
G JSF und Login Java Basics - Anfänger-Themen 2
W HttpClient + 'Login' Java Basics - Anfänger-Themen 3
F Java login & input (html). Java Basics - Anfänger-Themen 4
G Probleme beim Login (Webservice) Java Basics - Anfänger-Themen 4
G Login - Allgemeine Fragen Java Basics - Anfänger-Themen 6
B Scriptseite für eBay-Login + Kaufübersicht Java Basics - Anfänger-Themen 8
K login grafikcode Java Basics - Anfänger-Themen 3
P LogIn prozedur Java Basics - Anfänger-Themen 4
J Login programmieren Java Basics - Anfänger-Themen 5
F Bei Login mit Enter bestätigen Java Basics - Anfänger-Themen 7
megachucky login window funktioniert nicht richtig. Java Basics - Anfänger-Themen 4
megachucky problem mit "login - window" Java Basics - Anfänger-Themen 2
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3
G suche ein tutorial um einen LOGIN einzurichten. Java Basics - Anfänger-Themen 5
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
W Cache Simulation Java Basics - Anfänger-Themen 3
L Ampel-Simulation Java Basics - Anfänger-Themen 20
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
D Erste Schritte Jäger-Beute Simulation Java Basics - Anfänger-Themen 19
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
S Simulation auf Knopfdruck Java Basics - Anfänger-Themen 29
L Maus Click Simulation Java Basics - Anfänger-Themen 5
D Simulation von Geburt/Tod und "richtige" Erkennung eines Hindernisses Java Basics - Anfänger-Themen 7
G menü in simulation Java Basics - Anfänger-Themen 3
maddin86 Simulation Wettrennen mit diversen Fahrzeugen Java Basics - Anfänger-Themen 9
X Monte Carlo Simulation (integral) Java Basics - Anfänger-Themen 4
frau-u Simulation eines Fernsehers Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben