• 17.04.2024, 00:33
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

brauche Rat bei Java

Mittwoch, 12. November 2008, 14:00

Hallo zusammen,

ich muss für die Uni ein kleines Übungsprogramm schreiben. Darin enthalten soll eine simple Benutzerabfrage sein. Die Abfrage funktioniert auch komplett. Nur beim Vergleich der Strings und der eingegebenen Strings bleibt er immer bei voreingestellten Wert stehen.
Und bitte jetzt keine Codekritik oder die Frage nach dem Sinn ich brauche Tips ;)
[pre]
import java.util.Scanner;
public class dokumente {

//Methode abfrage (Ausgabe der logIn Abfrage und Übergabe an Methode checkuser)
public static void abfrage () {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte Benutzer eingeben: ");
String eingabeNAME=scanner.next();
System.out.print("Bitte Passwort eingeben: ");
String eingabePASSWORT=scanner.next();
//Übergabe der eingelesenen Werte an Methode checkuser
checkuser(eingabeNAME, eingabePASSWORT);
}

//Methode checkuser (Überprüfung von Benutzer und Passwort)
public static String checkuser (String uebergabeNAME, String uebergabePASSWORT) {
String user="admin";
String passwort="1";
String check="ERROR!";
if (uebergabeNAME==user && uebergabePASSWORT==passwort) {
check="OK";
} else {
System.out.println(check+"Bitte erneut eingeben!");
abfrage();
}
return check; //WARUM IST CHECK NICHT "OK"? WENN ICH DIE RICHTIGEN WERTE EINGEBE???

}


//Hauptprogramm
public static void main(String[] args) {
//Aufrufen der Funktion abfrage
abfrage();



}

}

[/pre]
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 14:15

Ich hab's hier mal leserlich und bunt formatiert: http://paste.pocoo.org/show/90947/

Ganz ungünstig erscheint mir, dass sich die Methoden `abfrage` und `checkuser` gegenseitig aufrufen, d. h. sehr tief verschachteln können. Möglicherweise stammt daher auch der Fehler.

Mein Tipp: `checkuser` sollte zunächst mal einen Wert vom Typ Boolean zurückgeben und dieser sollte *außerhalb* der Methode, nämlich in `abfrage`, verarbeitet werden. Das könnte etwa so aussehen (natürlich ließe sich hier `abfrage` auflösen und der Inhalt direkt in `main` verschieben): http://paste.pocoo.org/show/90948/

Probier' das mal aus, ob es wie erwartet funktioniert.

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 14:24

ich programmier jetzt zwar seit nem Jahr c# aber meine mich erinnern zu können das java, genauso wie c#, bei string == string die "speicheraddressen" prüft. guck mal ob die Stringklasse eine CompareTo(String) Methode hat. wenn ja vergleicht man damit Strings!

wenn uebergabeNAME.CompareTo(user) == 0 ist stimmen sie überein

edith sagt: hab gerade kurz nachgeguckt. mit compareTo(String) kriegste das raus ;)


bei uebergabeNAME == user prüfste wie oben schon beschrieben nur die Adressen...



guck dir mal Call by Reference und Call by Value an und merk dir wo was verwendet wird ;)

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 14:43

Ups, da hat der Anisachse in einem wichtigen Punkt Recht. Mein Java is' auch schon 'ne *ganze* Weile her :)

Der Vergleichsoperator `==` funtkioniert IIRC nur bei den nativen Datentypen (also denen, die nicht von `Object` erben, wie `int`, `float`, `long` oder `char`) mit den jeweiligen Werten.

Du willst aber vermutlich eher `string1.equals(string2)` verwenden als `.compareTo()`.

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 14:47

ups...
ich sag ja, unizeit ist schon etwas her ::)
in c# ist es compareto
in java wars equals? auch gut :)

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 14:55

danke für die hilfe.......das problem ist nur ich würds ja gerne verwenden..........darf ich aber nicht ;)

Aussage der Profs ist:"Was noch nicht behandelt wurde wird mit 0 gewertet."

Also brauch ich ne andere Möglichkeit den Vergleich zu führen. Hab auch schon mit if und while rumprobiert. Die Sache nur halt immer, das das Prog auch läuft, nur egal was ich mache, am Ende bleibts bei false.
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:06

mach aus dem string ein char array und durchlauf es mit ner schleife.

vergleich nach dem umwandeln erstmal die längen und guck ob die stimmen, wenn sie stimmen vergleich char für char miteinander und speicher dir in einem boolean ob etwas nicht übereinstimmte.


danach kannste ja eine aussage treffen ob es überein stimmt ;)

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:07

Anisachse: `.compareTo()` gibt's bei Java auch, nur liefert es einen Integer (vermutlich -1, 0 oder 1) zurück und ist für Vergleiche zum Sortieren gedacht; `.equals()` liefert dagegen einen Boolean und dürfte auch etwas performanter sein, da es kein so genaues Ergebnis abliefern muss.

pepe_lgh: Was ist "das"? String-Methoden? Wenn ihr die wirklich noch nicht habt und nicht benutzen sollt, musst du wohl einen Stringvergleich selbst implementieren. Dazu musst du die Arrays vom Typ `String[]` parallel durchlaufen (mit einer Schleife, die ihr hoffentlich schon benutzen dürft?) und die Zeichen an den jeweils gleichen Positionen vergleichen. Sobald zwei davon nicht übereinstimmen, kannst du den Vergleich abbrechen und `false` zurückliefern.

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:12

ähm..
aus einem string ein string[] machen?!
dann doch lieber ein char[] wenn wir performant programmieren wollen ;)
edith sagt:
und bei nem string[] hätteste das selbe Problem wie beim string <-- hat mich gerade noch unser Student drauf hingewiesen

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:12

danke für die Hilfe.......habs erstmal mit equals gemacht und das klappt wunderbar.......muss mal mitm prof reden
:)
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:20

Zitat von »Anisachse«

ähm..
aus einem string ein string[] machen?!
dann doch lieber ein char[] wenn wir performant programmieren wollen ;)

Uuups :) `char[]` natürlich. Nur wenn noch keine `String`-Methoden dran waren, dann wahrscheinlich auch kein Typecasting.

Dabei geht's hier weniger um die Performanz als zu vermitteln, wie ein Stringvergleich funktioniert (wenngleich die Implementierung der Standardbibliothek eben aus Performanzgründen natürlich anders aussehen kann oder überhaupt gar nicht in der zugehörigen Sprache implementiert ist, sondern in der Kernsprache - meistens C).

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 15:28

c REGELT OBERST !!!!!11!!!!EINSELF!!!!! ;D ;D

Re: brauche Rat bei Java

Mittwoch, 12. November 2008, 22:33

also wir haben momentan nur schleifen, if und n bischen variablen deklaration etc. durchgenommen.
ich würde mich mal als fortgeschrittenen anfänger bezeichnen, da mir array und typecasting schon was sagt.
das problem ist einfach nur, dass die profs nur code akzeptieren, der schon in den vorlesungen behandelt wurde. und das nervt grade ein bischen.
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Donnerstag, 13. November 2008, 09:25

das ist ma echt krank....
unsere Lehrer und Dozenten haben sich immer gefreut wenn der Schüler sich das selbst angeeignet hat, weiter gedacht und vorallem rumprobiert/gesucht hat.

haste wohl scheiss Profs erwischt *g*

Re: brauche Rat bei Java

Donnerstag, 13. November 2008, 14:08

Naja, es geht auch darum, bestimmte Grundlagen zu verstehen und umzusetzen. Die lernt man aber nicht, wenn man - in diesem Fall - eine fertige Authentifizierungslösung benutzt.

Re: brauche Rat bei Java

Donnerstag, 13. November 2008, 14:56

die grundlagen verstehe ich ja auch............hab mir den code ja auch selbst erarbeitet und ich weiß ja auch was der algorithmus tun soll und auch wann.........was mich nur nervt ist die tatsache, dass so ne simple sache wie .equals() jetzt nicht erlaubt sein soll und ich mir dann irgend so konstrukt aus boolean, if, while etc. bauen soll, nur weil der prof das so will >:(
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Donnerstag, 13. November 2008, 15:35

Zitat von »pepe_lgh«

die grundlagen verstehe ich ja auch............hab mir den code ja auch selbst erarbeitet und ich weiß ja auch was der algorithmus tun soll und auch wann.........was mich nur nervt ist die tatsache, dass so ne simple sache wie .equals() jetzt nicht erlaubt sein soll und ich mir dann irgend so konstrukt aus boolean, if, while etc. bauen soll, nur weil der prof das so will  >:(


dein ärger ist verständlich. ich finde diese vorgehensweise auch nicht sonderlich förderlich. später geht es ja darum möglichst simple und elegant zu coden.

Re: brauche Rat bei Java

Freitag, 14. November 2008, 11:33

Zitat von »pepe_lgh«

die grundlagen verstehe ich ja auch............hab mir den code ja auch selbst erarbeitet und ich weiß ja auch was der algorithmus tun soll und auch wann.........was mich nur nervt ist die tatsache, dass so ne simple sache wie .equals() jetzt nicht erlaubt sein soll und ich mir dann irgend so konstrukt aus boolean, if, while etc. bauen soll, nur weil der prof das so will  >:(


da gibts nen trick: einfach den code von z.b. .equals() aus der lib ins eigene programm copy/pasten und benutzen ;)

Re: brauche Rat bei Java

Freitag, 14. November 2008, 14:17

Zitat von »elbarto`«



da gibts nen trick: einfach den code von z.b. .equals() aus der lib ins eigene programm copy/pasten und benutzen ;)

wie meinste das jetzt genau?
Verkaufe: Yeong Yang YY- B0420 mit 2x airplex 240 und 4x Airstrem, vollgedämmt

Re: brauche Rat bei Java

Freitag, 14. November 2008, 15:30

Ironisch.