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;
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() {
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
Kommentar veröffentlichen