Brauch Hilfe bei der Argument Prüfung

Guten Tag,

Ich bräuchte mal die Hilfe…
Ich bin kein guter Java Programmierer aber es reicht mir aus. Das Problem ist ich weiß nicht wie ich Argumente Prüfen kann so dass er Überprüft ob Hinter dem Haupt Command noch etwas steht z.B. /hilfe 1
und nicht nur /hilfe also habe ich gedacht

if (args[0] == „1“) {

}
Bitte Helft mir weiter :blush:

Hi, rufst du auf der Konsole dein Programm auf kannst du mehrere Argumente mit Leerzeichen trennen.

>java testProgramm arg1 arg2 arg3

alle Argumente landen der Reihe nach im Array „arg“

>System.out.println(arg[0]+";"arg[1]);

Gibt dann also
>arg1;arg2
aus

Sorry, ich kann dir leider nicht helfen.

Gruß
Daniel

Das Problem ist ich weiß nicht wie ich Argumente Prüfen kann
so dass er Überprüft ob Hinter dem Haupt Command noch etwas
steht z.B. /hilfe 1
und nicht nur /hilfe also habe ich gedacht

if (args[0] == „1“) {

}

Im Prinzip passt das schon fast.

Sie sollten vielleicht als erstes mit args.length die Größe des Parameter-Arrays (= Anzahl der Parameter) abfragen. Dann wissen Sie schon mal, aus wie vielen Teilen Ihre Argument-Liste besteht.

Die können Sie sich dann einzeln vornehmen. Da die einzelnen Elemente des Arrays Strings sind, sollten Sie sie aber nicht mit == vergleichen, sondern mit der Methode equals(). Es ist nämlich nicht garantiert, dass zwei Strings, welche die gleiche Zeichenkette repräsentieren, auch IDENTISCH sind. Gleich hingegen sind sie. Also:

if („1“.equals(args[0])) { … }

Je nachdem, wie viele Parameter Sie haben und wie es dann weitergehen soll, ist evtl. statt „if“ ein switch/case-Konstrukt besser. Seit Java 7 geht das auch mit Strings.

Generell ist Java übrigens nicht gerade die Top-Programmiersprache zum Basteln von Kommandozeilen-Tools…

Gruß,
Michael

Hallo,

ich nehme mal stark an, dass Sie die Prüfung in der main methode meinen, die

public static void main (String args[])

signiert ist.

Wie viele Argumente der Nutzer zum Aufruf mitgegeben hat, kann man an arrays immer mittels des feldes length, also in dem Fall args.length

if (args.length==1) {
// TODO then
}

Hoffe das war es, was Sie meinen.

Viele Grüße!

Hi Philip

zu deinem Beispiel /hilfe 1 du musst bis die Position bis zum Leerzeichen ermitteln (zwischen hilfe und 1).
und dann einfach bis zu dieser Position abschneiden.

http://stackoverflow.com/questions/2911005/how-to-cu…

Hallo,

im Grunde ist es Ganz einfach. Als Beispiel macht sich die main Methode ja immer ganz Gut.
Im Voraus noch was zur Übergabe des String[] args.
args ist ein Array von Strings … und genau so wird es auch ausgelesen.

public static void main(String[] args) {
System.out.println(„Test“);
/* Einzelne Argumente auslesen und ausgeben lassen */
for (String s: args) {
System.out.println(s);
}
/* Alternative */
for (int x = 0; x

An alle die Geschrieben haben, Danke für die schnellen und guten Antworten

Und an piccarlit ich muss leider Java nutzen da ich dies alles als ein Java Plugin schreibe für eine Server Software namens Bukkit

piccarlit ich muss leider Java nutzen da ich dies alles als ein Java Plugin schreibe für eine Server Software namens Bukkit

Hallo Philip,
du könntest den Eingabestring in ein char-Array umwandeln, welches du auf den Befehl "hilfe"hin überprüfst, aber die Schleife bis zum Ende deines Arrays weiterlaufen lässt. Wenn da dann noch Zahlen stehen, kannst du die einfach erkennen. Bei einstelligen Zahlen ist es logischerweise immer der letzte Char.
Ich hoffe ich konnte dir weiterhelfen,
mit freundlichen Grüßen
m_amann

hi,
zum beispiel:
if (args[0].equals(„hilfe“)) {
if ((args.length != 2) {
// fehler
} else {
String param = args[1];

}
}

Das Problem ist ich weiß nicht wie ich Argumente Prüfen kann
so dass er Überprüft ob Hinter dem Haupt Command noch etwas
steht z.B. /hilfe 1
und nicht nur /hilfe

Hallo Philip Moritz,

ich verstehe deine Frage nocht so ganz.

Es geht dir darum, Übergabeparameter vom Programmaufruf auszuwerten?

Diese werden, wie von dir geschrieben, im args-Array übergeben. Um mehr als einen Parameter auszuwerten musst du einfach auf die anderen Elemente des Arrays zugreifen, also args[1], args[2], usw.
Wie viele Parameter dein Programm erhalten hat, kannst du herausfinden, indem du die Eigenschaft

args.length

ausliest.

Du kannst dann mit einer Schleife wie dieser:

for (int i = 0; i 
alle Parameter auswerten.

Gruß vom Linuxxer

Hallo Philip,

Ich bin auch nur Anfänger und verstehe bereits Dein Problem nicht : Wo gibt Du denn Argumente ein und wie sollen diese überprüft werden ?

Dein Beispiel sieht mir sehr nach UNIX-Script-Programmierung aus und hier bezieht sich die Anzahl der Argumente wohl auf den dieses Script aufrufenden Befehl, dem ich weitere Angaben mitgeben kann ( oder auch nicht ).

Ich muss also annehmen, dass die von Dir gesuchten Argumente ebenfalls durch den Programm/Methoden-Aufruf mitgegeben wurden - und hier sollte doch mit @param ein Makro „Methoden-Parameter“ aufgerufen werden können. Wie gesagt, auch ich bin hier nur Anfänger …

Mit Gruß,
Frank-Thomas

Hallo,

man könnte natürlich die Argumente selber prüfen, d.h. wenn args[0] den String „-hilfe“ enthält (Vorsicht: Strings sind Objekte und müssen mit der equals-Methode verglichen werden!), dann greift man auf das nächste Element args[1] zu.

Aber ich würde empfehlen, für diese Aufgabe eine fertige Bibliothek einzubinden. Das Problem, Kommandozeilen-Argumente zu verarbeiten, ist ja nicht neu, und die Lösungen, die es bereits dafür gibt, sind in der Regel wesentlich besser und robuster, als alles, was man sich selber auf die Schnelle zusammenstrickt.

Beim Versuch, Deine Aufgabe umzusetzen, habe ich mich an folgenden Blog-Einträge zum Command Line Interface von Apache Commons orientiert:

Schöne Grüße,

Manfred

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.Options;

public class ArgumentePruefen
{
 public static void main(String[] args)
 {
 // Argumente selber prüfen:
 if(args[0] .equals ("-hilfe") && args.length \> 1)
 {
 System.out.println(args[1]);
 }

 // Argumente mit apache commons-cli prüfen:
 System.out.println(getHilfeOption(args));
 }

 private static String getHilfeOption(String[] args)
 {
 Options options = new Options();
 options.addOption("hilfe", true, "Hilfe");

 CommandLineParser parser = new BasicParser();
 try
 {
 CommandLine cmd = parser.parse(options, args);
 return cmd.getOptionValue("hilfe");
 }
 catch (org.apache.commons.cli.ParseException e)
 {
 }
 return null;
 }
}

Hallo,

ich verstehe die Frage nicht ganz.
Und es gibt sehr viele Java-Tutorials auf der Welt.
www.google.de
args ist ein Array mit args.size() kann man prüfen wie viele Argumente übergeben wurden.
mit args[x] kann man auf jedes Element zugreifen.

if (args.size()>0) {
//dann gibt es Argumente
for (int i=0;i

Ich gehe davon aus, dass wir von der Methode

public static void main(string[] args)

sprechen. Der Programmname steht in args[0], das erste Argument in args[1], das zweite in args[2] u.s.w. Natürlich nur, wenn die Argumente angegeben sind, sonst gibt es eine IndexOutOfBoundsException. Also die Länge von args prüfen über args.length.

Hallo,

sorry, aber da kann ich dir nicht weiterhelfen. Ich verstehe ehrlich gesagt gar nicht, was du überhaupt tun willst?