menu
{$Head.Title}}

Übung Java if/else Expression

Übung Java if/else Expression

Ausgangslage

Mit dieser Übung soll eine Zahl von der Kommandozeile eingelesen werden. Diese Zahl soll einen Code des HTTP (Hypertext Transfer Protocol) Protokolles repräsentieren. Nun ist zu prüfen, um was für eine Kategorie es sich handelt.

Das HTTP-Protokoll definiert die folgenden Codebereiche:

  • 200-299 : Successful
  • 300-399 : Redirection
  • 400-499 : Client Error
  • 500-599 : Server Error

Kommandozeilenparameter werden beim Aufruf dem Programm übergeben. Die Parameter werden mit einem Space (Blank)separiert und im Array args[] der Methode main(...) abgelegt. Das folgende Codefragment zeigt die Auswertung und Anzeige von Kommandozeilenparametern:

public static void main (String[] args) {
  for (int i=0; i < args.length; i++) {
    System.out.println ("param[" + i + "]: " + args[i]);
  }
}

Beim Ausdruck args[i] handelt es sich um einen String. Dieser String ist nun in einen primitiven int-Datentyp zu konvertieren. Das folgende Codefragment zeigt diese Konversion über die Wrapper-Klasse Integer auf:

int number = Integer.parseInt (args[i]);
Vorgehen

Lösen Sie bitte die Aufgabe wie folgt:

  1. Erzeugen Sie die Datei HttpCodeRange.java mit einem geeigneten Editor.

    In Eclipse eröffnen Sie eine neue Klasse am einfachsten über das Menu New-> Class:

    Geben Sie jeder Klasse neben dem Namen ein Package mit.

  2. Programmieren Sie die Klasse HttpCodeRange mit dem Gerüst der Methode main(String []args) aus und programmieren Sie die Klasse weiter gemäss dem folgenden Listing:
    public class HttpCodeRange {
      public static void main(String[] args) {
        if (args.length < 1) {
          System.err.println("no argument specified");
          return;
        }
        for (int i = 0; i < args.length; i++) {
           System.out.println("param[" + i + "]: " + args[i]);
        }
      }
    }
  3. Speichern Sie das Programm ab und führen Sie solches aus via Popup Menu Run As->Java Application:

    Leider ergibt das Programm keine Ausgabe an die Konsole, weil keine Kommandozeilen Parameter definiert sind.

    Öffnen Sie nun über das Menu Run->Run Configurations den folgenden Dialog:

    Definieren Sie wie im Dialog die Werte "200 302 404 500 -1 600" und lassen Sie das Programm erneut ausführen: Die Konsole sollte die Werte nun korrekt anzeigen:

  4. Nun geht es darum, innerhalb der Schleife die Argumente in eine int-Variable umzuwandeln und auf den korrekten Bereich hin zu prüfen. Das folgende Listing zeigt einen möglichen Ansatz:
    for (int i = 0; i < args.length; i++) {
      System.out.println("param[" + i + "]: " + args[i]);
      int httpCode = Integer.parseInt(args[i]);
      if (httpCode < 200 || httpCode >= 600) {
        System.out.println(httpCode + " is out of range");
        continue;
      }
      if (httpCode >= 200 && httpCode < 300) {
        System.out.println(httpCode + " successful");
        continue;
      }
      if (httpCode >= 300 && httpCode < 400) {
        System.out.println(httpCode + " is redirection");
        continue;
      }
      ...
    }

    Programmieren Sie alle Varianten aus.

  5. Zusatzaufgabe: Was passiert bei der Eingabe eines ungültigen Http Codes wie z.B. "eins" ausgeschrieben?
Lösung

Eine mögliche Lösung finden Sie hier