Konsolenparameter übergeben über den Reiter "arguments"

knuffi88

Mitglied
Hi zusammen,

habe gerade dieses Java-Forum entdeckt und ich hoffe ihr könnt mir helfen.
Ich verzweifle gerade an einer Sache bei Eclipse.
Muss dazu sagen, dass ich noch ziemliche Anfängerin bin.

Ich habe von einer Seite ein kleines Programm heruntergeladen:
http://ccwi.cs.hm.edu/toolwiki/images/4/46/EclipseTutorialAdressManager_src.zip

Dabei geht es um ein Adressbuch. Um einen Adressbucheintrag ausgeben zu lassen, muss ich das Programm mit einem Parameter starten, und zwar dem namen.
Ich habe ein Objekt namens sandra angelegt, aber wenn ich über Run->Run Configurations->Arguments sandra übergebe, bekomme ich die Meldung in der Konsole, dass er keinen Eintrag findet.
Jetzt aber das ulkige. Ich habe in der Main-Methode einfach mal die Zeile
args[0] = "sandra"; geschrieben. Und siehe da, er gibt die Adressdaten aus.

Jetzt frage ich mich, wieso das nicht über den Argumentsreiter geht. Habe zum Testen eine einfache Main-Methode mit der Ausgabe von args[0] über print erstellt und bei dieser einfachen Aufgabe funktioniert es über den Arguments-Reiter. Könnt ihr mir da weiterhelfen?

Er gibt ja in der Konsole aus, dass er nach dem namen sandra sucht.
Aber er findet nichts. :bahnhof:

Das sind so kleine Sachen, wo ich mir den Kopf zerbreche, weils mich sehr interessiert, wieso das nicht klappt.

Viele Grüße und schon einmal Danke!

Eure Sandra
 
S

SlaterB

Gast
wie sieht es denn nun ganz konkret aus,
du sagst mehr oder weniger dass '"sandra" als Parameter ankommt, aber nicht funktioniert,
obwohl "sandra" direkt im Quellcode eingegeben funktioniert?
das ist ja schwer zu glauben,

hast du schon Tests der folgenden Form durchgeführt?
Java:
main {
  String a = .. parameter;
  String b = "sandra";
  System.out.println(a ist .. b ist .., a.equals b? = ..);

  Programmdurchlauf-Methode mit a aufrufen, Ergebnis ausgeben
  Programmdurchlauf-Methode mit b aufrufen, Ergebnis ausgeben
}
kommt da wirklich raus dass beide Strings gleich sind, equals true ergibt und der eine Aufruf funktioniert, der andere nicht??
 

knuffi88

Mitglied
Hi SlaterB,

ich habe nun dies getestet:
String a = args[0];
String b = "sandra";
//args[0] = "sandra";
if(a.equals(b))
{ System.out.println.("Beide Strings sind gleich"); }

Die if verzweigung wird immer durchlaufen. aber nur wenn ich diese eine Zeile
wieder auskommentiere dann gibt er Name, e-Mail Adresse etc. aus.
Ansonsten bekomme ich no Person found...

Das ist so unglaublich...
Ich versteh es nicht, an was das liegt

LG, Sandra
 
S

SlaterB

Gast
ok, dann ist der Logik nach wirklich praktisch nur noch ein Fehler möglich,
daran hatte ich nicht gedacht, zum Glück im Programm doch schnell zu finden, nicht von Dateien abhängig:

du vergleichst Strings mit == statt equals, somit wird nur die Konstante "sandra" gefunden, die im Quelltext überall dasselbe Objekt ist,
andere Strings mit gleichen Inhalt dagegen nicht,

im Download ist im DefaultAddressBookReader übrigens nur "person1" und "person2" definiert, gar keine "sandra"..
 

knuffi88

Mitglied
Ich habe die Person sandra noch testweise hinzugefügt .
Also Person1 und Person2 führt zum gleichen Ergebnis.
Nur habe ich leider deine Erklärung nicht verstanden. welche codezeile
in welcher Datei meinst du denn? und was ist der Unterschied
zwischen den beiden übergebenen werten?
LG Sandra
 

knuffi88

Mitglied
Ok d.h. ich ersetze alle == mit equals. trotzdem verstehe
ich immer noch nicht den Unterschied wenn ich eine String variable übergebe oder
im Programm explizit eine String variable definieren. das müsste doch beides das selbe sein. sorry. Da stehe ich noch bisschen auf dem schlauch . wäre cool wenn du mir das nochmal genauer erklären könntest :bahnhof: danke. LG
 
S

SlaterB

Gast
alles dazu wird im Link bzw. in jedem Lehrbuch ausführlichst erklärt, hast du gelesen was bei
Dies liegt daran, dass Java intern einen Pool für Zeichenketten verwendet. Verwenden Sie einen String, der bereits im Programm existiert (in diesem Fall verwendet str2 die selbe Zeichenkette wie str), wird kein neuer String erzeugt, sondern der String aus dem Pool zugewiesen. Dadurch verweisen auch wirklich beide Zeichenketten auf die selbe Stelle im Pool.
usw. steht?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Eclipse Mithilfe eines Plugins den Source Code, bevor an den Parser übergeben wird, modifizieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
H Kann ich Commandline-Parameter in Eclipse oder Netbeans einfacher übergeben? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J Argumente der GUI übergeben IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
G Eclipse Compiler Optionen übergeben IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
H Kommandozeilen-Argumente übergeben in Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G parameter an main übergeben in eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
C Netbeans Parameter übergeben ? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
OnDemand Eclipse Kommentar über die gesamte Zeile IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse Test über USB mit meinem XperiaV IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 13
K Eclipse Imports Aufräumen über viele Dateien IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
V Eclipse Zugriff auf gif über Ordnerstruktur IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
R Netbeans - pinke senkrechte Linie über den Quellcode IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
D problem mit Subclipse über Netzwerk IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
D Eclipse Compiler über Bash ansprechen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
Z Eclipse CVS Plugin: Connection über Proxy IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
K Mit Eclipse läuft Programm, über Konsole leider nicht IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4

Ähnliche Java Themen

Neue Themen


Oben