Aufruf in Konsole mit beliebig vielen Argumenten?

Status
Nicht offen für weitere Antworten.

sunfy

Mitglied
Hallo,
ich hab da mal ne Frage.
Ich rufe ein Programm über die Konsole auf und übergebe diverse Parameter.

bsp.:
Code:
java test Parameter1 Parameter2

die Parameter lese ich dann in Java aus.

Code:
public static void main(String args[])
   String Param1 = args[1];
   String Param2 = args[2];
   String Param3 = args[3];
...

Soweit ist noch alle klar.
Doch was ist wenn ich eine Liste von Werten übergeben will,
von denen ich vorher nicht weiß, wieviele es sind.

bsp. wenn ich eine Namensliste übergeben will:

Code:
java test Parameter1 Parameter2 hans peter fritz

die Namen sollen dann in einer ArrayList gespeichert werden.
In welcher Form muss ich die Namen dann übergeben?
Muss man vor die Namen dann ein "-" setzen?
Was bewirkt das Minus und wie lese ich das dann aus?

Gruß Sunfy
 

JPKI

Top Contributor
Hö? Was für'n Minuszeichen?? Wenn du die Parameter alle in eine ArrayList einfügen willst:
Code:
public static void main(String args[]) {

 ArrayList<String>  list = new ArrayList<String>();

  for (int i = 0; args == null || i < args.length; i++)
   list.add(args[i]);
}
 

sunfy

Mitglied
mit dem Minus meinte ich etwas in der Art:

Code:
java Parameter1 Parameter2 -peter -hans -fritz Parameter3
oder
java Parameter1 Parameter2 -peter -hans -fritz -paul -gustav Parameter3

Damit dann alle Namen im Parameter2 drin sind, und ich den Parameter3 nicht mit in den Namen habe.
Aber wahrscheinlich ist es doch einfacher, wenn man die Namen ans Ende setzt und dann mir der for-Schleife alle einliest.
 

JPKI

Top Contributor
Es gab da doch so 'ne ganz praktische API... Dem Objekt gab man den String-Array der main() und konnte dann ganz fein nach Parametern sortieren und die Werte auslesen...

Vielleicht fällt's mir später nochmal ein ???:L
 

sunfy

Mitglied
ne, mit APIs etc. wird das zu komplex.

da ich das Programm mit
Code:
java programm start parameter1 parameter2 ...
aufrufe und das Programm startet dann einen Thread, der die eigentliche Berechnung durchführt.
Hat den Vorteil, dass das Programm mit
Code:
java programm stop
den Thread auch wieder beenden kann, oder mit
Code:
java programm status
verschiedene Statistiken ausgibt.

Und beim Aufruf des Threads muss ich halt immer die Argumente mit übergeben.

Ich werde die Parameter jetzt einfach mit einer Schleife auslesen. Das wird das einfachste sein.
Dachte nur, dass es da vielleicht eine Möglichkeit gäbe mit "-parameter" schon ein Array als Argument übergeben zu bekommen.
sodass dann
Code:
args[2] == {hans, peter, fritz}
wäre.

Thnx Sunfy
 

Murray

Top Contributor
sunfy hat gesagt.:
Code:
java programm start parameter1 parameter2 ...
aufrufe und das Programm startet dann einen Thread, der die eigentliche Berechnung durchführt.
Hat den Vorteil, dass das Programm mit
Code:
java programm stop
den Thread auch wieder beenden kann, oder mit
Code:
java programm status
verschiedene Statistiken ausgibt.
Das wird so einfach nicht funktionieren, denn mit jedem Aufruf des Java-Interpreters erzeugst du eine neue VM. Und ein Programm kann nicht auf einen Thread zugreifen, der in einer anderen VM läuft. Oder ist die Java-Anwendung nur quasi das Interface für eine als Dienst laufende Anwendung, die die Fäden zusammenhält? Das wäre natürlcih eine andere Liga...
 
T

tuxedo

Gast
Die Api für die Sache mit den Argumenten hießt glaube ich "getopt" oder so .. Die Jungs von jsresources.org haben die immer mal wieder benutzt.

- Alex
 

sunfy

Mitglied
ja genau.
Ist etwas komplizierter das alles zu erklären.
Aus jeden Fall läuft das schon alles, hab nur vergessen eine ParameterList mit zu übergeben.

Muss jetzt nur nochmal schauen, wie ich die Parameter am besten durchreiche.

Gruß Sunfy
 

NTB

Bekanntes Mitglied
Wie wäre es, wenn Du es so machst:

Code:
java programm -parms1 val1 val2 val3  -parms2 val4 -parms3 val5 val6 val7

D.h. es gibt für die jeweilige Gruppe einen "switch" hinter dem die Argumente kommen.

Ich meine mich zu erinnern, dass mir hier im Forum mal der Link zu einem Jakarta Commons Projekt zur Auswertung der Übergabeparameter geschickt wurde.

/Tante Edit hat mal nachgeschaut:
http://commons.apache.org/cli/
 

Leroy42

Top Contributor
JPKI hat gesagt.:
Code:
public static void main(String args[]) {

 ArrayList<String>  list = new ArrayList<String>();

  for (int i = 0; args == null || i < args.length; i++)
   list.add(args[i]);
}

args==null???

Kann das denn überhaupt vorkommen, wenn nicht gerade diese
main-Methode selbst via Java aufgerufen wird? ???:L

Außerdem meintest du bestimmt

Code:
for (int i = 0; args != null && i < args.length; i++)
 

sunfy

Mitglied
also es läuft inzwischen alles so wie ich will.
Hab die einfachste Variante aufgegriffen und meine Parameter variabler Anzahl ans Ende gesetzt und dann mit einer Schleife ausgelesen.

Code:
public class WorkThread extends Thread{
		private String args[];
		
		public WorkThread(String args[]){
			this.args = args;
		}

		public void run(){
			
			List<String> lva2List = new ArrayList<String>();
			for (int i = 8; args == null || i < args.length; i++) 
				lva2List.add(args[i]); 
usw...


Die Variante von NTB ist sicherlich schöner, aber ich habs jetzt mal unschön mit der Schleife gelöst.


Vielen Dank euch allen.
Gruß Sunfy
 

Leroy42

Top Contributor
Code:
for (int i = 8; args == null || i < args.length; i++)

Erstens stört mich die festverdrahtete 8.
Zweitens lies dir bitte mal meinen zuvor geposteten Beitrag durch...
:cool:
 

sunfy

Mitglied
ja die 8 ist plöd, kannst aber erstmal nicht ändern.

Bei der Nicht-Abbruchbedingung hast du Recht, da war ein Denkfehler drin, so ist es richtig.
Code:
args != null && i < args.length;

Thnx Sunfy
 

Leroy42

Top Contributor
Gut erkannt!

Ich warte nur noch darauf, dass JPKI seinen Irrtum zugibt.

Aber auch
Code:
         for (int i = 8; args != null && i < args.length; i++) 
            lva2List.add(args[i]);

bereitet mir (nicht verwöhnt durch heutige Prozessorleistungen)
zumindest Bauchgrummeln

Ich (persönlich) würde das verändern in
Code:
         if (args != null)
              for (int i = 8; i < args.length; i++) 
                  lva2List.add(args[i]);

Dann wäre ich wirklich befriedigt :cool:
 

JPKI

Top Contributor
Leroy42 hat gesagt.:
Gut erkannt!

Ich warte nur noch darauf, dass JPKI seinen Irrtum zugibt.
Ok, Leroy, wenn's dich befriedigt :roll: :
Ich habe mich geirrt!
So. Auch Hobbyprogrammierer sind nur Menschen. [ausrede]Außerdem liegen die Null und die Eins auf meiner Tastatur so dicht nebeneinander, deshalb hab ich == und nicht != geschreiben :wink: [/ausrede]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
berserkerdq2 Wie mache ich den rekursiven Aufruf in IJVM Allgemeine Java-Themen 3
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
R JDK installieren OpenJDK-Aufruf sehr langsam Allgemeine Java-Themen 4
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
P CMD Aufruf mit Admin-Rechte Allgemeine Java-Themen 2
cool_brivk24 Klassen Klassen Aufruf Fehlgeschlagen Allgemeine Java-Themen 14
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Genson - zirkulärer Aufruf Allgemeine Java-Themen 1
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
B Kodierung von String -> URL aufruf Allgemeine Java-Themen 2
G Rekursiver Aufruf von Waagengewichten Allgemeine Java-Themen 2
H Klassennamen zum Aufruf eines statischen Feldes aus Variable holen Allgemeine Java-Themen 4
M datei aufruf prüfen Allgemeine Java-Themen 9
D JNI DLL Aufruf Allgemeine Java-Themen 32
M datei aufruf datum auslesen Allgemeine Java-Themen 5
A Java Verhalten bei parallelem Aufruf derselben Methode?? Allgemeine Java-Themen 2
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
Z Socket Aufruf einer Klasse in einer anderen Klasse Allgemeine Java-Themen 6
A JNI: Unerklärlicher Crash beim Aufruf von CallVoidMethod Allgemeine Java-Themen 9
S Variablen bei Aufruf zurücksetzen Allgemeine Java-Themen 4
J yield() Aufruf in einer synchronized-Methode Allgemeine Java-Themen 13
R JAR aus Batchdatei Aufruf Allgemeine Java-Themen 4
Kr0e Sichtbarkeitsregeln nach Executor-Aufruf Allgemeine Java-Themen 5
F rekursiver Aufruf (Sudoku und Guice) Allgemeine Java-Themen 19
B Cipher.getInstance Aufruf sehr langsam Allgemeine Java-Themen 2
M Aufruf von Unix-Shell in Java Allgemeine Java-Themen 5
G Aufruf einer Methode in IStatus exex Allgemeine Java-Themen 4
E Seltsamer aufruf von java.util.Date.toString() Allgemeine Java-Themen 3
C Netbeans - Aufruf-Reihenfolge Allgemeine Java-Themen 5
Nicer Problem mit Link aufruf Allgemeine Java-Themen 6
M Cobol-Aufruf aus Java Allgemeine Java-Themen 6
C Aufruf einer Methode einer anderen Klasse Allgemeine Java-Themen 14
T Lib/Framework zum Automatischen Aufruf von Methoden Allgemeine Java-Themen 2
R Ableiten - Methoden aufruf bei abgeleiteten Klassen Allgemeine Java-Themen 4
G DAOFactorry aufruf Allgemeine Java-Themen 10
G Aufruf einer Methode wenn Klasse noch nicht existiert Allgemeine Java-Themen 3
V Aufruf von Klasse mit Runnable versteh ich nicht Allgemeine Java-Themen 8
S Übergabe / Aufruf einer beliebigen Methode in einer anderen Allgemeine Java-Themen 9
R toString() methode überschreiben mit rekursivem aufruf. Allgemeine Java-Themen 8
N Main-Klasse wird beim Aufruf des JARs nicht gefunden Allgemeine Java-Themen 8
D Problem bei Aufruf einer Funktion Allgemeine Java-Themen 3
B Null Pointer Exception bei Canvas-objekt-Aufruf Allgemeine Java-Themen 12
reibi Aufruf eines private Konstruktors Allgemeine Java-Themen 7
M Rekrusiver Aufruf ? Allgemeine Java-Themen 6
D aufruf beim kopieren Allgemeine Java-Themen 11
J einfachster Servlet-Aufruf klappt nicht Allgemeine Java-Themen 3
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
S problem mit externen aufruf Allgemeine Java-Themen 4
M [Windows] Aufruf von Java mit Sonderzeichen im Classpath Allgemeine Java-Themen 5
D VM crash nach Aufruf von GetFieldID und GetMethodID in JNI Allgemeine Java-Themen 31
G PDF AUfruf Allgemeine Java-Themen 6
S Aufruf meines Programms Allgemeine Java-Themen 2
U zweifacher Aufruf animiertes gif Allgemeine Java-Themen 7
G Konstruktor-Aufruf nun mit oder ohne Typ? Allgemeine Java-Themen 9
T CMD nach aufruf von javaw Programmname wieder schließen Allgemeine Java-Themen 3
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
A Problem beim Aufruf von javac Allgemeine Java-Themen 7
W Aufruf von JavaBeans Allgemeine Java-Themen 3
R0m1lly BinärBaum auf Konsole ausgeben Allgemeine Java-Themen 9
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
M Cmd Konsole als Java Konsole Allgemeine Java-Themen 5
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
A Befehle in Konsole. Allgemeine Java-Themen 12
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
Neumi5694 Swing GUI vs Konsole Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
B Farbiger Text in der Konsole Allgemeine Java-Themen 1
RalleYTN JAnsi Warum bleiben die Hintergrundfarben beim Reseten der Konsole? Allgemeine Java-Themen 0
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
W Java Konsole "aufteilen" Allgemeine Java-Themen 4
G Warnung in der Konsole von Eclipse "WARNING: ..." Allgemeine Java-Themen 2
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
L Konsole gibt Smileys aus Allgemeine Java-Themen 3
T Mit Java auf die Konsole eines Process-Objekts zugreifen Allgemeine Java-Themen 10
Kaniee Konsole "mitlesen" Allgemeine Java-Themen 6
P .Jar Datein Windows Konsole zugewiesen Allgemeine Java-Themen 3
L Input/Output ProcessBuilder und Windows - Konsole verbergen? Allgemeine Java-Themen 5
T Methoden In Konsole tasten abfangen? Allgemeine Java-Themen 4
S exec( "cmd /c") aber Konsole soll offen bleiben Allgemeine Java-Themen 9
J Java-Klasse über Konsole starten Allgemeine Java-Themen 6
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
R java in der konsole nicht gefunden trotz jre,jdk,home und path Allgemeine Java-Themen 4
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
P Java Konsole zur Laufzeit einblenden Allgemeine Java-Themen 4
D Windows-Konsole auslesen - Zeichenkodierung Allgemeine Java-Themen 4
N GUI und zusätzlich Konsole Allgemeine Java-Themen 4
M Problem bei einer Baumausgabe auf der Konsole Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben