Parameter an Java-Programme übergeben

Status
Nicht offen für weitere Antworten.

vensch

Mitglied
Hallo Leute,
ich habe mal eine Frage, und zwar belege ich dieses Semester einen Programmierkurs in Java und komme bei der einen Aufgabe nicht weiter. Blutige Anfängerin...😳

Folgenden Code hab ich:

[highlight=Java]public class Stars {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("*");
System.out.println("***");
System.out.println("*****");
System.out.println("*******");
}

}[/highlight]

Nun soll ich dem Programm beim Start zwei Parameter übergeben und den Code hinzufügen, der beide Parameter auf die Konsole durch Komma getrennt ausgibt.
Ich blick da grad einfach nicht durch... ???:L
Danke schon mal für die Hilfe.
 
Programm-Parameter werden in dem Array args übergeben.

Wenn du sicherstellen kannst, dass 2 Parameter übergeben werde, ist die Ausgabe ziemlich einfach (der Index in Arrays fängt immer bei 0 an)
[highlight=Java]System.out.println(args[0] + ", " + args[1])[/highlight]

Um sicher zu gehen, dass es keine ArrayIndexOutOfBounds-Exception gibt (will heisen, es wird versucht auf einen Index zuzugreifen, den es nicht gibt) und um auch eine variable Anzahl von Parametern abzudecken, kannst du folgendes versuchen
[highlight=Java]
String ausgabe;
for (int i = 0; i < args.length; i++) {
ausgabe = args;
if (i < args.length) {
ausgabe = ausgabe + ", ";
}
System.out.println(ausgabe);
}
[/highlight]
 
Zuletzt bearbeitet:
Soetwas Ähnliches hatte ich auch in meinen Thread vor, nur mit einem Parameter.

Diese Start-Methode, public static void main(String[] args) hat ja, wie man unschwer erkennen kann, einen Parameter. Dieses String-Array verwaltet die übergebenen Parameter. Das heißt, der erste Parameter, den Du dem Programm übergibst, ist in args[0], der zweite in args[1] und so weiter.

[HIGHLIGHT="Java"]public class Stars
{
public static void main(String[] args)
{
String parameter1 = args[0];
String parameter2 = args[1];
}
}[/HIGHLIGHT]

(Exceptions habe ich jetzt extra nicht berücksichtigt, da ist SvenKs Version definitiv besser)
Nun hast du die Parameter, diese kannst du jetzt überall verwenden, z.B. für die Konsole.

Aber wie übergebe ich denn dem Programm jetzt die Parameter?
Wenn du Eclipse hast, lass dir mal über File ► Export
eine Jar-File erstellen.

Diese kannst Du jetzt über cmd aufrufen und ihr Parameter übergeben.
(wir gehen davon aus, dass die File auf dem Desktop liegt)
Wir geben also ein:
Code:
cd Desktop
↑Hierdurch wechseln wir zur Desktop-Ebene
Code:
java -jar NameDesProgramms.jar parameter1 parameter 2
Bsp:
Code:
java -jar ParameterTestProgramm.jar hallo 50

[Ist jetzt mal ungestestet]
 
Zuletzt bearbeitet:
Programm-Parameter werden in dem Array args übergeben.

Wenn du sicherstellen kannst, dass 2 Parameter übergeben werde, ist die Ausgabe ziemlich einfach (der Index in Arrays fängt immer bei 0 an)
[highlight=Java]System.out.println(args[0] + ", " + args[1])[/highlight]

Um sicher zu gehen, dass es keine ArrayIndexOutOfBounds-Exception gibt (will heisen, es wird versucht auf einen Index zuzugreifen, den es nicht gibt) und um auch eine variable Anzahl von Parametern abzudecken, kannst du folgendes versuchen
[highlight=Java]
String ausgabe;
for (int i = 0; i < args.length; i++) {
ausgabe = args;
if (i < args.length) {
ausgabe = ausgabe + ", ";
}
System.out.println(ausgabe);
}
[/highlight]


Hmmm...mir wird tatsächlich ein ArrayIndexOutOfBounds-Exception angezeigt:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Stars.main(Stars.java:14)


Wenn ich allerdings die zweite Variante versuche, bekomme ich gar keine Ausgabe bzw. nur die, die ich ganz am Anfang schon hatte - die Zeilen mit den Sternchen. Woran mag das liegen?
 
Dann übergibst du wohl keine Parameter...
Code:
if (args.length < 2)
{
    System.out.println("Eeeeyh, zwo Parameter angeben, aber flott!!");
    return;
}
 
Wenn ich allerdings die zweite Variante versuche, bekomme ich gar keine Ausgabe bzw. nur die, die ich ganz am Anfang schon hatte - die Zeilen mit den Sternchen. Woran mag das liegen?
Vergessen die Parameter mit anzugeben?

In deinem Fall würdest du in der Kommandozeile folgendes eingeben
Code:
java Stars Parameter1 Parameter2
Du kannst soviel Parameter angeben wie du willst, immer durch Leerzeichen voneindander getrennt.
 
Okay, so langsam bin ich hier am Verzweifeln... 🙁
Hab am Code rumgewerkelt, versteh aber immer noch nicht so ganz, was genau ich eingeben muss, um ein ArrayIndexOutOfBounds-Exception zu verhindern...
Mein Code lautet im Moment

[highlight=Java]public static void main(String[] args)
{
//
System.out.println("*");
System.out.println("***");
System.out.println("*****");
System.out.println("*******");
{ System.out.println("1. Parameter: " + args[0]);
System.out.println("2. Parameter: " + args[1]);
}
} [/highlight]

Was mach ich falsch?
 
codemäßig machst du nichts falsch (bis auf die {-Klammern vor und nach dem hinzugefügten System.out, die kannst du dir sparen)

Aber du bekommst bei deinem Code die ArrayIndex...., wenn du gar keine Parameter an das Programm übergibst bzw nur 1 Parameter.

Also noch einmal:
startest du das Programm über die Kommandozeile, gibst du ein
Code:
java Stars Parameter1 Parameter2
Startest du das Programm über Eclipse, gehst du im Menü "Run" -> "Run Configurations" im folgendes Dialog zu dem Eintrag "Stars" unter "Java Applications", wechselst in den Aktenreiter "Arguments" und gibst unter "Program Arguments" deine 2 Parameter an. Dann auf Run klicken und schon läuft es. Bei Netbeans und anderem müsste dir jemand anderes sagen, wie man das einstellt

WICHTIG!! bei deinem Code mindestens 2 Parameter angeben
 
Aaaaaaahhhh, jetzt verstehe ich. Ich arbeite das erste mal mit Eclipse, deswegen war ich etwas verwirrt. Nun funktioniert es - ich danke dir! :toll:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben