Ü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:
- 100 Continue
 - 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:
- 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.
 - 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]); } } } - 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:

 - 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.
 - 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
