Undefined for the type...

Br4ve

Bekanntes Mitglied
Hallo
Ich habe ein Problem mit einer Implementierung. Ich versuche grade eine Benutzerauthentifizierung zu schreiben. Die Methode "loginKorrekt" der Klasse "Benutzer" soll name und passwort überprüfen.
Folgender Code:
Java:
   public static boolean loginKorrekt(String name, String passwort) {
        if (name == name.getName() && passwort == name.getPasswort() ){
            return true;
        } else {
            return false;          
        }

    }
Nun zeigt mir eclipse jedoch an "The method getName() is undefined for the type String"
Dazu folgender simpler Code:
Java:
public String getName() {
        return name;
    }
getPasswort verhält sich analog.
 

eRaaaa

Top Contributor
Also erstmal, solltest du Strings mit equals vergleichen, nicht mit ==

Zweitens: Die Fehlermeldung sagt doch schon alles. name ist ein String-Objekt, welches nunmal keine Methode getName besitzt!
Du willst sicherlich getName von DEINEM Objekt aufrufen ?! (wahrscheinlich this.getName(), oder ähnlcihes (mehr Code? ;D ))
 
S

SlaterB

Gast
was bedeuten die Worte 'Dazu folgender simpler Code'?
ist das eine Methode der Klasse Benutzer? ruhig alle Informationen hinschreiben, die du hast,

wenn es eine solche Methode in der Klasse Benutzer gibt, dann kannst du sie an einem Benutzer-Objekt aufrufen, aber nicht an einem String,

vielleicht
if (name == getName()
bzw.
if (name == this.getName()
statt
if (name == name.getName()
?

dann darf die Methode loginKorrekt aber nicht statisch sein

edit: ja, equals besser auch verwenden
 

faetzminator

Gesperrter Benutzer
Es wird versucht, [c]getName()[/c] auf dem String [c]name[/c], welchen du als Parameter übergibst, aufzurufen. [c]String.getName()[/c] gibt es aber nicht. Zusätzlich vergleicht man Objekte mit [c]equals()[/c] und nicht mit [c]==[/c]. Passwörter sollten des Weiteren nicht als String im Programm vorkommen.
 

javimka

Top Contributor
Die Klasse String hat auch keine Methode wie getName() oder getPasswort. Du meinst wahrscheinlich getName und getPasswort von der Klasse Benutzer.

Strings solltest du übrigens immer mit equals vergleichen: [c]name.equals(getName())[/c]
 

Br4ve

Bekanntes Mitglied
Also ja ich habe aus der Klasse Benutzer 2 Instanzen initialisiert:
Java:
 Benutzer benutzer1 = new Benutzer();
        benutzer1.setName("patrick");
        benutzer1.setPasswort("SE1good");
        Benutzer benutzer2 = new Benutzer();
        benutzer2.setName("Robin");
        benutzer2.setPasswort("IJ4Prog");
In meiner Klasse "Benutzer" liegt nun die Methode "loginKorrekt", die wie oben beschrieben implementiert war. Später folgt der Login und die AUthentifizierung in einem ganz andern Package....
Java:
Scanner scanner = new Scanner(System.in);
        System.out.print("Bitte geben sie ihren Benutzernamen an: ");
        String benutzer = scanner.nextLine();
        System.out.print("Bitte geben sie nun ihr Passwort an: ");
        String passwort = scanner.nextLine();

        if (benutzerverwaltung.Benutzer.loginKorrekt(benutzer, passwort)
            == true) {
            System.out.print("Login korrekt: ");
Nun soll die Methode loginKorrekt prüfen ob name und passwort stimmen.... Ich hoffe jez wirds ein wenig klarer :p
Mit simpler COde meinte ich dass das blos ein getter von Benutzer ist....
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Na dann ist doch schon alles gesagt
Java:
if (this.name.equals(name)) && ...

Wofür ist das denn? Ist das nur eine SPielerei oder soll das ernsthaft eingesetzt werden? Denn dann solltest du dir den letzten Satz von faetzminator nochmal durchlesen :)

/edit:
In meiner Klasse "Benutzer" liegt nun die Methode "loginKorrekt"

Wieso issn die dann eig. static? ;/
 
Zuletzt bearbeitet:

Br4ve

Bekanntes Mitglied
Wahrscheinlich WAR die static weil ich wieder mist gemacht hab ^^
Das is meine wunderschöne weihnachts uni HA bzw ein kleiner teil davon ;)
das mit dem passwort soll schon so trotzdem ty
 

Br4ve

Bekanntes Mitglied
Das is schwierig hab das mit euml2 erst als UML diagramm angefertigt, also die vorgabe war n diagramm dass wir übertragen sollten :p
 

Br4ve

Bekanntes Mitglied
Also dann steht da jez also:
Java:
public boolean loginKorrekt(String name, String passwort) {
        boolean x = false;
        if (this.name.equals(getName()) 
            && this.passwort.equals(getPasswort()) ) {
            x = true;
            return x;
        } else {
            return x;          
        }

    }
wobei er nun den fehler ausgibt "2 return anweisungen, obergrenze 1"
Ich weis auch wieder wie ich auf das static kam un zwar sagt er mir sonst an dieser stelle:
Java:
if (benutzerverwaltung.Benutzer.loginKorrekt(benutzer, passwort)
            == true) {
            System.out.print("Login korrekt: ");
cannot make a static reference.....
Das ist allerdings meine main methode...Darf ich da denn das static einfach wegmachen?
 

eRaaaa

Top Contributor
Java:
if (this.name.equals(getName()) 
            && this.passwort.equals(getPasswort()) ) {
???:L
Da prüfst du doch garnicht den übergebenen Wert :D
Schau dir nochmal meine if-Abfrage an oder SlaterB`s !!
 

Br4ve

Bekanntes Mitglied
ja ich idiot bin auch langsam total durchnander ^^
ich hab jez denk ich n guten code gemacht:
Java:
 public boolean loginKorrekt(String name, String passwort) {
        boolean x = false;
        if (this.name.equals(name) 
            && this.passwort.equals(passwort) ) {
            x = true;
            
        } 
        return x;

    }
so hab ich auch nur ein return jez.
Aber was ich nich verstehe, mit was vergleich er denn da genau jez also name und passwort sind doch die übergebenen parameter oder?
Aber er soll ja quasi gucken ob das benutzer1 oder benutzer2 ist!? Also ich meine eig muss das doch auf dem Objekt ausgeführt werden oder?
 

eRaaaa

Top Contributor
Aber was ich nich verstehe, mit was vergleich er denn da genau jez also name und passwort sind doch die übergebenen parameter oder?
Aber er soll ja quasi gucken ob das benutzer1 oder benutzer2 ist!? Also ich meine eig muss das doch auf dem Objekt ausgeführt werden oder?

Ja wenn loginKorrekt in Benutzer ist schon ja.
Aber wie gesagt, ohne irgendwelche Informationen deinerseits was genau gemacht werden soll, kann man dir auch nicht sagen ob da ein Designfehler o.ä. versteckt ist.

Ich könnte mir nämlich gut vorstellen, dass loginKorrekt in der Benutzerklasse nichts zu suchen hat :bahnhof:
 

Br4ve

Bekanntes Mitglied
Klasse Benutzer:
Java:
package benutzerverwaltung;


public class Benutzer {

    private String passwort;
    private String name;


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }



    public String getPasswort() {
        return passwort;
    }


    public void setPasswort(String passwort) {
        this.passwort = passwort;
    }

    public boolean loginKorrekt(String name, String passwort) {
        boolean x = false;
        if (this.name.equals(name) 
            && this.passwort.equals(passwort) ) {
            x = true;
            
        } 
        return x;

    }

}
AUfrufender Teil in anderem package, klasse "Dokumentverwaltung":
Java:
package dokumentenverwaltung;

import io.EingabeKontrollen;

import java.util.Scanner;

import benutzerverwaltung.Administrator;
import benutzerverwaltung.Benutzer;


public class DokumentVerwaltung {

    // Dummy-Methode zur Authentifizierung
    public static boolean anmeldung(String benutzer, String passwort) {
        return true;
    }

    // Zeigt das Menü an
    public static void menuAnzeigen() {
        System.out.println("Bitte wählen Sie:");
        System.out.println("Dokumente anzeigen [1]");
        System.out.println("Dokument eingeben [2]");
        System.out.println("Dokument löschen [3]");
        System.out.println("Programm beenden [4]");
    }

    public static void main(String[] args) {
        // Initialisierungsaufgaben
 
        Benutzer benutzer1 = new Benutzer();
        benutzer1.setName("patrick");
        benutzer1.setPasswort("SE1good");
        Benutzer benutzer2 = new Benutzer();
        benutzer2.setName("Robin");
        benutzer2.setPasswort("IJ4Prog");
        
        Dokument dok1 = new Dokument("", "Dok1", "Text", false);
        Dokument dok2 = new Dokument("ein Bild", "Dok2", "Bild", false);
        Dokument dok3 = new Dokument("tolles PDF", "Dok3", "PDF", true);
        Dokumente.dokumentSpeichern(dok1);
        Dokumente.dokumentSpeichern(dok2);
        Dokumente.dokumentSpeichern(dok3);
        
        // Anmeldung
        
        Scanner scanner = new Scanner(System.in);
        System.out.print("Bitte geben sie ihren Benutzernamen an: ");
        String benutzer = scanner.nextLine();
        System.out.print("Bitte geben sie nun ihr Passwort an: ");
        String passwort = scanner.nextLine();

        if (benutzerverwaltung.Benutzer.loginKorrekt(benutzer, passwort)
            == true) {
            System.out.print("Login korrekt: ");
            boolean beenden = false;
            while (!beenden) {
                menuAnzeigen();
                int eingabe = scanner.nextInt();
                switch (eingabe) {
                case 1:
                    Dokumente.dokumenteAnzeigen();
                    break;
                case 2:
                    boolean erfolg = false;
                    erfolg = Dokumente.dokumentAnlegen();
                    System.out.print("Erfolgreich angelegt: ");
                    System.out.println(erfolg);
                    break;
                case 3:
                    System.out.print("Bitte geben sie den " 
                    + "Namen des zu löschenden"
                        + " Dokuments an: ");
                    String antwort = scanner.next();
                    int id = Dokumente.gibDokId(antwort);
                    Dokumente.dokumentLoeschen(id);
                    break;
                case 4:
                    System.out.print("Wirklich beenden? 'ja [1]'/'nein [0]' ");
                    beenden =  EingabeKontrollen.jaNeinEingabe();
                    break;
                default :
                    System.out.println("Falsche Eingabe.");
                    break;
                }
            }
        } else {
        System.out.println("Kein Zugriff");
        }
        
        
     

        
       

    }

}
Hilft das ein wenig oder brauchst du noch mehr? Also ich soll hier 2 Benutzer initialisieren, was ich ja auf gemacht habe... Danach per Scanner die Strings einlesen und jez soll man nur zugriff quasi bekommen wenn man als Benutzer authentifiziert ist....Habe hier allerdings in Zeile 52 immernoch das Problem "cannot make a static reference..."
 
Zuletzt bearbeitet:

Schumi

Bekanntes Mitglied
Deine Methode loginKorrekt ist nicht statisch, das heißt Du müsstest sie immer über eine Instanz aufrufen. In Deinem Fall wäre das dann benutzer1 bzw. benutzer2.
ETA: Also
Java:
 if (benutzer1.loginKorrekt(benutzer, passwort) || benutzer2.loginKorrekt(benutzer, passwort)
So wie ich die Logik verstehe und falls die loginKorrekt in der Form an den einzelnen Benutzer hängen bleiben soll (ist aber schon ein recht eigenartiges Design) solltest Du Dir irgendwo eine Liste aller registrierten Benutzer halten und bei einem loginversuch über diese iterieren und falls sich ein passender findet weitermachen.

Du rufst sie z.Z. aber als statische Klassenmethode auf. Das geht nicht. Was sollen denn darin für Werte für Name und Passwort genutzt werden? Daher kannst Du die Methode auch nicht statisch machen.

ETA2: Abfragen von booleans auf Gleicheit zu true kannst Du Dir sparen d.h.
Java:
if(myBoolean == true)
und
Java:
if(myBoolean)
sind äquivalent.

ähnlich ist es bei Zuweisungen für Rückgabeparameter. Daher kannst Du Deine loginKorrekt auch recht gut kürzen:
Java:
public boolean loginKorrekt(String name, String passwort) {
  return this.name.equals(name) && this.passwort.equals(passwort) 
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
B method intValue() is undefined for the type String (?) Java Basics - Anfänger-Themen 4
G typeof is undefined for the type "Klassenname" Java Basics - Anfänger-Themen 8
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
F The constructor Vehikel(String, int) is undefined warum?? Java Basics - Anfänger-Themen 4
D Methoden undefined method Java Basics - Anfänger-Themen 13
L Constructor is undefined Java Basics - Anfänger-Themen 4
snipesss Operator "-" is undefined Java Basics - Anfänger-Themen 1
O Operator undefined Java Basics - Anfänger-Themen 2
S CSVReader funktioniert nicht ---- The Constructor CSVReader(String) is undefined Java Basics - Anfänger-Themen 4
S The constructor File(URL) is undefined Java Basics - Anfänger-Themen 10
G Undefined Instanz/Konstruktoraufruf Java Basics - Anfänger-Themen 8
M Ausgabe von "Undefined" Java Basics - Anfänger-Themen 3
D The constructor Bestellung(Bestellung.Produkt, Bestellung.Kunde) is undefined Java Basics - Anfänger-Themen 15
E method undefined - wo ist der Fehler? Java Basics - Anfänger-Themen 5
S BufferedWriter undefined constructor Java Basics - Anfänger-Themen 5
5 newBoxLayout undefined for Player? obwohl eingebunden. Java Basics - Anfänger-Themen 7
S Vector an DefaultTableModel übergeben .Vector is undefined Java Basics - Anfänger-Themen 8
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
nbergmann The type JOptionPane is not accessible. Java Basics - Anfänger-Themen 4
M Type Erasure in Java Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
P Jackson mapper.readValue mit generischem Type Java Basics - Anfänger-Themen 10
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
K VerketteteListen unexpected type Fehler Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
T Compiler-Fehler Null type safety (type annotations) Java Basics - Anfänger-Themen 5
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
V RMI - argument type mismatch Java Basics - Anfänger-Themen 1
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
H enum Type Java Basics - Anfänger-Themen 6
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
I Erste Schritte Eclipse - Does not contain a main type Java Basics - Anfänger-Themen 8
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
C MIME-Type null Java Basics - Anfänger-Themen 4
G default class type Java Basics - Anfänger-Themen 3
J Type inference Java Basics - Anfänger-Themen 26
C Warning: Type safety: Potential heap pollution via varargs parameter array Java Basics - Anfänger-Themen 5
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
O unexpected type - weiß nicht weiter! Java Basics - Anfänger-Themen 3
M Datentypen problem!! Unexpected type in bleuj Java Basics - Anfänger-Themen 2
P Compiler-Fehler unexpected type - Stehe auf dem Schlauch Java Basics - Anfänger-Themen 3
M This method must return a result of type int Java Basics - Anfänger-Themen 13
T Unhandled exception type Java Basics - Anfänger-Themen 2
J unexpected type variable/value Java Basics - Anfänger-Themen 2
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
D Compiler-Fehler void is an invalid type for the variable Java Basics - Anfänger-Themen 5
H LocationReferenceImpl cannot be resolved to a type Java Basics - Anfänger-Themen 5
K unexpected type variable/value Java Basics - Anfänger-Themen 7
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
M Objekt Cannot instantiate the type ... Java Basics - Anfänger-Themen 10
S this method must return a result of type double Java Basics - Anfänger-Themen 2
L Type/Cast Problem Java Basics - Anfänger-Themen 6
A Variablen Type safety Warnung beseitigen Java Basics - Anfänger-Themen 3
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
J Color cannot be resolved to a type Java Basics - Anfänger-Themen 4
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
B Type von Class erhalten Java Basics - Anfänger-Themen 2
G incompatibel return type bei vererbung Java Basics - Anfänger-Themen 18
J String cannot be resolved to a type Java Basics - Anfänger-Themen 6
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
J Type-Casting Java Basics - Anfänger-Themen 8
M 'void' type not allowed Java Basics - Anfänger-Themen 18
lumo lösen von: "Type safety"? Java Basics - Anfänger-Themen 4
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G raw type Java Basics - Anfänger-Themen 2
N Java Sound - Unsupported control type Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben