Aufgabe: Parameterübergabe über die Kommandozeile

Schreiben Sie ein Programm, dem bei Programmstart zwei Zahlen auf der Kommandozeile/Terminal als Argumente übergeben werden. Die Zahlen sollen dann miteinander multipliziert werden und das Ergebnis ausgegeben werden. Überprüfen Sie, ob genau zwei Argumente bei Programmstart mitgegeben werden, ansonsten soll eine aussagekräftige Fehlermeldung angezeigt werden.

Gibt es da einen passenden Befehl?

Hier sieht man wie es geht.

Aber funktioniert das für das Terminal nicht anders?

https://javabeginners.de/Grundlagen/main.php

Im Wiki gibt es einen Artikel, der das behandelt.
https://wiki.byte-welt.net/wiki/4_Grundrechenarten_auf_der_Kommandozeile

1 Like
public class AchtKommando {
  public static void main(String[] args) {
    if(args.length!=2) {
	System.out.println("Fehler!"); 
    }
    else {
      int ergebnis = Integer.valueOf(args[0]) * Integer.valueOf(args[2]);
      System.out.println("Ergebnis: " + ergebnis);
    }
  }
}

Hab das bis jetzt, allerdings kommt direkt ein fehler

Es hilft häufig zu der Aussage „da kommt ein Fehler“ … auch die Fehlermeldung zu posten.

  1. Bitte formatiere Code (hab’s mal gemacht), z.B. drei Backticks davor und danach
  2. Integer.valueOf(args[2]) ist außerhalb des Arrays, der zweite Wert wäre Integer.valueOf(args[1])
  3. Das könnte man auch aus der Exception ersehen, das sollte eine ArrayIndexOutOfBoundsException sein

Bitte den Ratschlag von Landei beherzigen…

Dann besser die parse-Methoden verwenden: Integer.parseInt usw., denn du brauchst nur ein primitives int.

Also hast du:

public class Multiply {
    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println("Usage: Multiply [firstOperand] [secondOperand]");
            System.exit(0);
        }
        System.out.println(Double.parseDouble(args[0]) * Double.parseDouble(args[1]));
    }
}

Double.parseDouble gibt bereits eine passende Fehlermeldung zurück, wenn es keine Zahl bekommt, allerdings lassen sich beide parse-Methoden natürlich auch extrahieren, um ggf. eine andere/genauere Fehlermeldung auszugeben.

Der letzte Kommentar ist ein wenig unnötig, da sowohl die eine als auch die andere Methode am Ende parseDouble aufruft.

Wegen Java Autoboxing ist auch die Umwandlung trivial.

Von daher am besten den Kommentar ignorieren, weil verwirrend.