Rezension kleines Spiel mit Altersabfrage


Hallo Leute. Hiermit teile ich euch das versprochene Rezension über unserem letzten Projekt Spiel mit Altersabfrage. Es wird bisschen lang sein aber ich werde es ausführlich und Kurz genug halten.

Fangen wir mal ab der ersten Zeile an. In der ersten Zeile sieht ihr das befehl:

package eingabeaufforderung; Wie das Schlüsselwort es schon verraten hat, handelt es sich hierbei um den Paketnamen die nämlich „eingabeaufforderung“ lautet. Diese könnt ihr auch weglassen jedoch wird ihr feststellen, dass ich bei fast allen meiner Projekte ein Paket setze da es ansonsten meistens unübersichtlich wird, wenn ihr zu viel Projekte am Bearbeiten habt. In der dritten Zeile importieren wir den Scanner Funktion. Ohne diese Funktion würde unser Programm nicht in der Lage sein vom Benutzer festgelegten Werte anzunehmen. Das Eigentliche Quelldatei startet ab der fünften Zeile. Wir definieren unsere Klasse mit dem Namen EingabeAufforderung und entwickeln unsere Main-Methode. In unsere Main-Methode habe ich nur drei Ausgaben und eine Verbindung zu unsere zweiten Methode jetztGehtLos(); eingefügt. Dies hat einen Benutzerfreundlichen Hintergrund was wir Später dazu kommen werden. Nach dem Start wird das Programm drei Ausgaben welches in den Zeilen 9 bis 11 grün dargestellt worden sind. Danach werden wir ohne Verwendung jegliche Parameter in die Methode jetztGehtLos() weitergeleitet.

In der Methode jetztGehtLos befindet sich unser Eigentliches Programm. Wir definieren eine Variable, ohne wir diese einen Wert zuweisen, mit dem Primitiven Datentyp byte. Diese Variable werden wir in der 29 Zeile brauchen. Zwischen den Zeilen 24 – 26 Fordern wir den Benutzer auf eine Eingabe. Sobald der Benutzer eine Eingabe betätigt hat und dieses mit der Enter Taste bestätigt hat, wird dieses Eingabe als String gelesen und danach VERSUCHT (try) auf einem Primitiven Datentyp umzuwandeln. Warum versucht? Der Benutzer kann auch eine nicht Mathematische zeihen wie zum Beispiel Buchstaben oder Charakter (!,“,§,$,%,&,/,(,.. .. etc.) eingeben. Die Primitiven Datentypen können nur Zahlenwerte speichern was in diesem Fall zur Absturz des Programms führen kann. Um die Abstürze oder Fehlermeldungen zu vermeiden müssen wir den Crash abfangen. Wir sagen mit try & catch dem Compiler. Versuche die Eingabe des Benutzers in einer Zahl umzuwandeln und diese in einem Primitiven Datentyp zu speichern. Wenn dieses Versuch fehlerhaft sein sollte, dann führe das catch aus. Also ist der Verlauf des Programms vom Benutzer abhängig. Wir tätigen dazu eine Zahl ein. Der Benutzer gibt eine echte Zahl ein welches vom Scanner laut Zeile 26 als String Variable angenommen wird. Wir tippen dazu die Zahl 22 ein. Dies entspricht ein Alter von jemanden. Schließlich versucht der Compiler diese String Eingabe in einer byte Variable umzuformen. Dies wird auch Erfolgreich sein. Nach dieser Untersuchung befinden wir uns ab jetzt nur im try Block. Durch die Verzweigung if und else wollen wir uns sichern in dem wir das Eingegebene Zahl nochmals untersuchen. Die Variable byte hat ein Wertebereich von [-126 bis 127]. Das heißt, dass die Variable byte alle ganzen Zahlen zwischen [-126 bis 127] speichern kann. Was aber, wenn der Benutzer das Programm verarschen möchte in der diese negative Werte in die Konsole eingibt? Um solche frechen Spielchen zu vermeiden, müssen wir uns wie in der Zeile 30 etwas einfallen. Wir überprüfen die Eingabe. Wenn der Wert i Größer gleich null ist und i kleiner gleich 127 ist dann führe den Block aus. Auf Deutsch gesagt, es gibt keinen Negativen Alter also können wir auch diese ausschließen. Da es selten Menschen gibt die älter als 127 Jahre leben, können wir die Maximale Grenze des Datentyp byte einsetzen welches die 127 ist. Falls die Eingabe außerhalb der Bereich [0 ; 127] liegt wird der else Zweig ausgeführt. Da wir die Zahl 22 eingegeben haben, werden wir deshalb keine Probleme haben. Daher wird auf der Zeile 32 Die Ausgabe: Sie sind 22 Jahre alt. Ausgegeben. Nach dieser Ausgabe habe ich zwei variablen kommt und geht mit dem primitiven Datentyp boolean initialisiert danach habe ich die Variable kommt mit true und die Variable geht mit false deklariert. Das hat ein Semantischen Hintergrund. Mit kommt sage ich, dass wir in dem richtigen Weg gekommen sind weshalb wir durch unsere Eingabe kein Fehler ausgelöst haben. Mit geht meine ich, dass unsere Eingabe ein Fehler in unserem Programm ausgeführt hat weshalb wir wieder am Anfang alles wiederholen müssen. Also wieder zurückgehen müssen. Danach werden diese Beiden Parameter kommt und geht in die Methode loesung() eingegeben. Diese Methode befindet sich zwischen der Zeile 51 – 63. Sie kann nur Wahrheitswerte annehmen und zurückliefern. Also werden bei einem reellen alter die Ausgabe „Sie haben noch ein Geiles Leben vor sich“ ausgegeben. Dies geschieht wie folgt, Wenn wir wie in diesem Fall eine reelle Eingabe tätigen, werden unsere Variablen kommen und gehen mit den Werten für kommen = true und geht = false gesetzt. Sobald diese beiden Parameter in die Methode als kommen = true und geht = false weitergegeben werden, kennt die Methode loesung diese Beiden Parameter ebenfalls als kommen = true und geht = false. Danach beginnt wiederrum eine Verzweigung. Auf Deutsch: (Zeile 53) Wenn kommt = true ist und geht = false ist dann gebe folgendes aus: „Sie haben noch ein Geiles Leben vor sich.“ Danach gehe zurück in die Methode-jetztGehtLos(). Die Methode jetzGehtLos ist die Anfangsmethode in dem das Ganze Spiel wieder von Anfang an beginnt. Falls der Benutzer im try Block eine nicht reelle Alter eingegeben hat, wird er mit der Ausgabe „Verarschen kann ich mich selber Kollege :P“ konfrontieren. Da der Benutzer extrem Frech war in dem dieser das Programm verarschen wollte, wird das Programm beendet. Um dies dem Benutzer mitteilen zu können, wird der Compiler mit dem Befehl ende(); (Zeile 59) in die Methode ende weitergeleitet. Diese befindet sich zwischen der 15 – 19 Zeile. Dort werden die Ausgaben zwischen Zeile 16 – 18 ausgegeben und anschließend das Programm mit dem Befehl in der Zeile 19 System.exit(0); beendet.

 

Ich hoffe, dass meine Erklärung euch weiterhelfen und eure Fragen beantworten konnte. Sobald ihr Fragen allgemein habt, raus damit ich helfe Gerne. Jedoch empfehle ich ebenfalls jedem das Programm mal selber kurz zu kopieren danach in eurer Entwicklungsumgebung selber zu ausführen.










01 package eingabeaufforderung;
02
03 import java.util.Scanner;
04
05 public class EingabeAufforderung {
06
07     public static void main(String[] args) {
08
09        System.out.println("--------------");
10        System.out.println("PROGRAMM START");
11        System.out.println("--------------");
12        jetztGehtLos();
13     }
14
15     public static void ende() {
16        System.out.println("-------------");
17        System.out.println("PROGRAMM ENDE");
18        System.out.println("-------------");
19        System.exit(0);
20     }
21
22     public static byte jetztGehtLos() {
23        byte i;
24        Scanner scannerVariable = new Scanner(System.in);
25        System.out.println("Geben Sie ihr alter ein: ");
26        String eingabe = scannerVariable.nextLine();
27
28        try{
29           i = Byte.parseByte(eingabe);
30           if ( i >= 0 && i <= 127 ){
31              byte alter = i;
32              System.out.println("Sie sind "+i+" Jahre alt.");
33              boolean kommt = true;
34              boolean geht = false;
35              loesung(kommt, geht);
36           }
37           else {
38              System.out.println("Ihre Eingabe ist nicht Reel.");
39              jetztGehtLos();
40           }
41        }
42        catch(NumberFormatException e){
43           System.out.println("Sie haben keine Zahl als Alter eingegeben");
44           boolean geht = true;
45           boolean kommt = false;
46           loesung(kommt, geht);
47        }
48      return 0;
49    }
50
51    public static boolean loesung(boolean kommt, boolean geht) {
52
53       if(kommt == true &&geht == false){
54          System.out.println("Sie haben noch ein Geiles Leben vor sich...");
55          jetztGehtLos();
56       }
57       else if(kommt == false &&geht == true) {
58          System.out.println("Verarschen kann ich mich selber Kollege :P");
59          ende();
60       }
61
62    return true;
63    }
64 }

Kommentare

Beliebte Posts aus diesem Blog

How can I transform a .jar file to a .bat file?

Ein Kleines Spiel mit Altersabfrage

Zufallszahlen und Verzweigungen in Python