Startparameter festlegen?

Alex Großmann

Erfahrenes Mitglied
Hiho! :)

Ich such grad verzweifelt nachm Tutorial aber finde nichts... wenn man nen Programm über die Windows Konsole aufruft, kann man ja Parameter übergeben. Soweit ich das bisher gelesen/gehört habe, werden die in args in die Main Methode gepackt.
Nun will ich in der Main sagen: wird 1 übergeben dann öffne das UI, wenn nicht dann führe Funktion xy aus.

Nun wollt ich sowas wie:
Java:
if (args[0]){
ui();
}
oder:
Java:
 if (args.lenght < 1) ...

Jedoch geht beides nicht? Bzw. interessiert dem das wenig wenn ich parameter angebe ?
Danke im Vorraus!
 
Hi,

wenn du

Code:
programmname 1

aufrufst, ist args[0] = "1" (als String). Dein erstes Beispiel funktioniert dann also nicht (weil kein boolean). Um zu erfahren, ob der Parameter entsprechend da ist:

Java:
if (args.length > 0 && "1".equals(args[0])) {
  // tu was
}

Best regards,
 
Java:
if(String[int])
KANN garnicht funktionieren da if einen bool erwartet.
Bei deinem zweiten Beispiel
Java:
if(String[].length<1)
prüfst du ob die Länge des Array KLEINER als 1 ist ... aber du willst vermutlich wissen ob Array.length GRößER als 1 ist ... also einfach den Operanden tauschen in
Java:
if(String[].length>1)
Willst du wissen ob es überhaupt Elemente gibt einfach auf >0 prüfen.
 
Hm, ist es möglich ganze Strings zu übergeben?
Hab sowas wie:

Auswahl:
1 Programm wie gewohnt starten
2 Quasi das abgespeckte Programm starten und dabei einen Namen übergeben, wie Otto Beispiel:

2 Otto

Nun hab ich im Programm nen string name, welcher otto aufnehmen soll...
Java:
if (args.length > 0 && "2".equals(args[1]) && name.equals(args[2]) ){
...
Aber das verwirrt mich ein wenig, da ja weder ein Leerzeichen (sprich man müsste 2Otto eingeben) noch das Feld in String stimmen sollte oder?
Oder mach ich da einfach args[3].getText()?
 
Zu nächst mal beginnts du den Array-Index falsch. Ein Array startet immer bei 0 ... und nicht bei 1. Den Array-Index 1 wäre schon das zweite Element des Arrays.
Dann hast du übersehen das main ja im gegensatz zu vielen anderen Sprachen dierekt ein String-Array bekommt. Du kannst also über den Array-Index dierekt mit diesen String-Objekten weiterarbeiten.
Willst du jetzt nicht unbedingt mit dem Array arbeiten sondern mit expliziten String-Objekten dann einfach sowas hier
Java:
String string=args[index];
Warum du jetzt aber extra noch eine numerische Auswahl machen willst versteh ich nicht.
Im Regelfall starten Applikationen OHNE Parameter als vollwertige GUI. Erst mit angabe eines speziellen Parameters auf den geprüft wird das die GUI eben NICHT angezeigt wird wird das ganze dann abgespeckter.

Hier mal alles in etwas zusammengefasster Form

http://openbook.galileocomputing.de/javainsel/javainsel_03_008.htm

Hinweis Im Gegensatz zu C(++) steht im ersten Element des Argument-Arrays mit Index 0 nicht der Programmname, also der Name der Hauptklasse, sondern bereits der erste Programmparameter der Kommandozeile.
 
Wie immer, vielen Dank Spike ;)
Natürlich wäre ein nummerischer Aufruf schwachsinnig...
Gleich den Parameter übergeben ist viel effektiver...danke nochmals
 
Zuletzt bearbeitet:
Als kleinen Nachtrag :
du könntest z. B. das String-Array auf einen Parameter wie "-nogui" prüfen. Das erlaubt es dir explizit zwischen GUI und NICHT-GUI zu wechseln. Auch lässt es dir die Freiheit das falls wenn du es doch mit GUI starten willst trotzdem Parameter zu übergeben die dann *wenn in einer bestimmten Reihenfolge* einige Felder der GUI bereits füllen könnten. In der Regel macht man sicher aber diesen Aufwand seltener da davon ausgegangen wird wenn du dir schon die Mühe machst es über die Console zu starten auch dort gearbeitet wird. Ist halt alles eine Sache des Konzeptes.
 
Zurück