menu
{$Head.Title}}

Übung Java switch Expression

Übung Java switch Expression

Ausgangslage

Bei der Übung ifelse haben Sie einen Code dem Http Code Range zugewiesen.

In dieser Übung soll nun der exakte Text zu einem HTTP-Code ausgegeben werden. Hierzu ist der HTTP-Code als Kommandozeilenparameter zu übergeben.

Das HTTP-Protokoll definiert die folgenden Successful-Codes mit Text:

  • 200 OK
  • 201 Created
  • 202 Accepted
  • 203 Non-Authoritative Information
  • 204 No Content
  • 205 Reset Content
  • 206 Partial Content

Das HTTP-Protokoll definiert die folgenden Redirection-Codes mit Text:

  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Moved Temporarily
  • 303 See Other
  • 304 Not Modified
  • 305 Use Proxy

Das HTTP-Protokoll definiert die folgenden Client-Error-Codes mit Text:

  • 400 Bad Request
  • 401 Unauthorized
  • 402 Payment Required
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowed
  • 406 Not Acceptable
  • 407 Proxy Authentication Required
  • 408 Request Timeout
  • 409 Conflict
  • 410 Gone
  • 411 Length Required
  • 412 Precondition Failed
  • 413 Request Entity Too Large
  • 414 Request-URI Too Long
  • 415 Unsupported Media Type

Das HTTP-Protokoll definiert die folgenden Server-Error-Codes mit Text:

  • 500 Internal Server Error
  • 501 Not Implemented
  • 502 Bad Gateway
  • 503 Service Unavailable
  • 504 Gateway Timeout
  • 505 HTTP Version Not Supported

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 HttpCodeText.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 HttpCodeText mit dem Gerüst der Methode main(String []args) aus und programmieren Sie die Klasse weiter gemäss dem folgenden Listing:
    public class HttpCodeText {
      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 dem Http Code den korrekten Text zuzuordnen via switch Statement.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[1]);
      String text = "";
      switch(httpCode) {
      case 200: text = "OK"; break;
      ... TODO ...
      default: text = "Unknown"; break;
      }
        System.out.println(httpCode + ": " + text);
    }

    Programmieren Sie einige der möglichen 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