Programmeren in Java/Commandoregelargumenten
Zoals je ondertussen weet is main het ingangspunt van je programma. main is wat Java zal gebruiken om je programma te starten.
public class Main {
public static void main(String[] args) {
// Je programmacode
}
}
Zoals je wellicht ook hebt gemerkt is dat main een parameter heeft, namelijk String[] args. Hiermee kun je argumenten doorgeven wanneer je programma opstart.
Argument meegeven aan je programma
bewerkenVia de parameter args kun je dus argumenten in de vorm van een array met strings meegeven en gebruiken. Bijvoorbeeld als volgt.
public class Main {
public static void main(String[] args) {
System.out.println("Hallo " + args[0] + "!");
}
}
In dit voorbeeld gaan we een programma hebben waarbij we een naam zullen meegeven als we het starten. Deze naam komt dan als string terecht in de array met de naam args, deze naam zullen we dan met args[0] uit de array halen en printen op het scherm. We doen dit door eerst het programma te compileren met javac en dan het te starten met java.
javac Main.java java Main Jan
Zoals je ziet geven we de naam mee achter de naam van het programma. Dit heeft als resultaat:
Hallo Jan!
Als je nu echter vergeet om een naam mee te geven, krijg je volgende foutmelding.
java Main Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at Main.main(Main.java:4)
Dit komt omdat er geen argument is meegegeven, dus de array bevat geen elementen. Je kunt dit verhelpen door bijvoorbeeld een if toe te voegen aan je programma.
public class Main {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Je hebt geen naam meegegeven.");
} else {
System.out.println("Hallo " + args[0] + "!");
}
}
}
Meerdere argumenten
bewerkenWil je meerdere argumenten meegeven aan je applicatie kun je gewoon meer toevoegen aan de commando, telkens gescheiden door een spatie.
java Main Jan Klaas Karen
Dan kun je de namen uit de args array als volgt uitlezen.
public class Main {
public static void main(String[] args) {
// Door gewoon de array rechtstreeks aan te spreken.
// Dit heeft dus als nadeel dat je het exact juiste aantal argumenten moet meegeven.
// Anders krijg je fouten als je te weinig argumenten meegeeft,
// of print je te weinig namen als je meer argumenten meegeeft.
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
// Met de gewone for-lus.
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
// Met de for each-lus.
for (String name : args) {
System.out.println(name);
}
}
}