Was macht Integer.parseInt?
Hey, ich verstehe Integer.parseInt nicht so richtig.
Beispiel:
if (args.length > 0) {
String parameter = args[ 0];
int zahl = Integer.parseInt(parameter);
if (zahl % 7 == 0)
{
System.out.println("Glück gehabt!");
} else{
System.out.println("Pech gehabt");
}
} else {
System.err.println("Keine Zahl übergeben.");
}
Warum wird hier Integer.parseInt benutzt? Was bedeutet es überhaupt und warum wird einem String parameter = args[0] zugewiesen, was ist args[0]?
Außerdem, wie übergibt man hier nun dem System eine Zahl?
Warum überhaupt if (args.length > 0) ? Warum kann man nicht einfach if (zahl > 0){ ... (vorher wurde natürlich zahl mit int deklariert)
2 Antworten
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Gehen wir das mal durch...
1) args bezieht sich hierbei vermutlich auf den Standard Parameter Name in der main function (Ob der Code in der main Methode steht sehen wir ja leider nicht).
if (args.length > 0) {
String parameter = args[0];
int zahl = Integer.parseInt(parameter);
if (zahl % 7 == 0) {
System.out.println("Glück gehabt!");
} else {
System.out.println("Pech gehabt");
}
} else {
System.err.println("Keine Zahl übergeben.");
}
Das args.length > 0 --> Schaut im Endeffekt nur ob der Methode überhaupt ein Parameter überliefert wurde. Falls, dem nicht so ist, wird eine Fehlermeldung ausgegeben.
2) String parameter = args[0]; --> Hierbei wird ein string erstellt und diesem wird der Wert des ersten überlieferten parameters mitgeteilt (0, weil arrays immer bei 0 anfangen)
3) int zahl = Integer.parseInt(parameter); --> Hier wird einfach nur versucht den vorher festgelegten string in einen Integer zu konvertieren
Wie man dem ganzen nun eine Zahl mitgibt?
Da hier davon auszugehen ist, dass es sich um die main Methode handelt müsstest du das Programm via cmd starten und nach dem Pfad der Datei eine Zahl als Argument mitliefern.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
In dem Ordner wo auch deine Datei ist die Konsole öffnen und folgendes eingeben:
java deine_app.jar zahl
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Dein Code steht sicherlich innerhalb der main-Methode.
Bei Start einer Java-Anwendung kann man ihr noch Konsolenparameter mitgeben.
Beispiel (Aufruf über die Konsole):
java YourApplication 1 2 3
Die Werte 1, 2 und 3 werden daraufhin in einem Array gespeichert (args), welches der main-Methode überreicht wird.
public static void main(String[] args) {
Da du aber nicht sicher davon ausgehen kannst, dass jeder Aufrufer deiner Anwendung ihr auch Parameter mitgibt, solltest du erst prüfen, ob das Array tatsächlich Einträge enthält.
if (args.length > 0) {
Wenn dem nicht der Fall ist, hast du auch keine Werte, mit denen du arbeiten könntest.
Bei deiner Anwendung geht man davon aus, dass dem Programm ein Parameter mitgegeben werden könnte. Der wird dann hier:
String parameter = args[0];
nochmal in einer eigenen Variable abgespeichert. Entscheidend für den nachfolgenden Schritt ist, dass mitgelieferte Parameter immer vom Typ String sind. Strings können halt einen größeren Wertebereich aufnehmen (alle möglichen Zeichen, so auch Ziffern), es gibt eine größere Flexibilität.
Da der Parameter in deiner Anwendung als Zahl weiterverarbeitet werden soll, muss der String erst in einen numerischen Typ konvertiert werden. Das macht parseInt.
int zahl = Integer.parseInt(parameter);
Danke erstmal! :)
Wie genau mache ich das mit cmd?
Also ich weiß wie ich cmd aufrufen kann, aich wie ich dort "in" meine JavaDatei gelange, aber was gebe ich bei cmd explizit ein, um dem ganzen nun eine Zahl zu geben?