Grundlegendende Programmierkonzepte in Java
Website: | Hamburg Open Online University |
Kurs: | Programmieren mit Java |
Buch: | Grundlegendende Programmierkonzepte in Java |
Gedruckt von: | Gast |
Datum: | Donnerstag, 21. November 2024, 14:06 |
Beschreibung
Hier lernst du die grundlegenden Konzepte kennen und hast die Möglichkeit, dies als Tagebuch festzuhalten.
Ein Tagebuch
Bevor wir den Einstieg in die Programmierung mit Java starten, sollten
wir uns einmal überlegen, wo die Reise hingehen soll. Es wäre doch eine
wirklich gute Sache, wenn man ein Werkzeug hätte, mit dem man das
Programmieren lernen kann und gleichzeitig den Fortschritt auch
dokumentieren kann. Um hier ein nützliches Projekt zum Anfangen zu
haben, wollen wir uns ein Tagebuch aufbauen. Ein Tagebuch aber nicht
einfach nur als Text-Dokument in das wir nur hineinschreiben können,
sondern als ein Programm, welches uns hilft die Daten zu verwalten und
ggF. später auch vor unbefugtem Zugriff zu schützen und grafisch
ansprechend darzustellen.
public class Tagebuch { public static void main(String[] args) { String name = "Jan"; System.out.println("Hallo " + name + "!"); } }
Ein- und Ausgabe
import java.util.Scanner; public class Tagebuch { public static void main(String[] args) { System.out.println("Wie heißt du?"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); scanner.close(); System.out.println("Hallo " + name + "!"); } }
Das Schließen des Scanners ist in unserem Beispiel eigentlich nicht erforderlich. Es ändert nichts. Dennoch ist es eine gute Praxis die close-Methoden zu verwenden, wenn ein Datentyp diese anbietet und das jeweilige Objekt ausgebraucht ist. Erst hierdurch wird Java mitgeteilt, dass die verwendete Eingabe-Ressource nicht mehr gebraucht wird. Java gibt dann die Ressource frei und entlastet damit das Betriebssystem, welches die Ressource sonst weiter bereitstellen müsste. In unserem Beispiel ist das noch nicht kritisch, da mit dem Beenden des Programms ohnehin alle Ressourcen freigegeben werden.
Ablaufsteuerung
If
if( Wahrheitsaussage ) { Anweisung; }
Die Wahrheitsaussage ist ein Ausdruck, der nur wahr oder falsch sein kann. Im Englischen true oder false. Es gibt den Datentyp boolean für Wahrheitsaussagen. Als Anweisung kann z.B. eine oder mehrere Methoden aufgerufen werden.
import java.util.Scanner; public class Tagebuch { public static void main(String[] args) { System.out.println("Wie heißt du?"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); scanner.close(); if(name.equals("Jan")) { System.out.println("Hallo " + name + "!"); } } }
Else
if( Wahrheitsaussage ) { Anweisung; } else { AlternatiiveAnweisung; }
Java führt jetzt die Erste Anweisung aus, wenn die Wahrheitsaussage wahr ist und wenn sie falsch ist, wird die alternative Anweisung ausgeführt. Unser Beispiel kann entsprechend erweitert werden:
if(name.equals("Jan")) { System.out.println("Hallo " + name + "!"); } else { System.out.println("Der Benutzer ist abgelehnt."); }
Es muss hinter dem Schlüsselwort else nicht direkt ein Block geschrieben werden. Es ist auch möglich mehrere If miteinander zu verbinden:
if( Wahrheitsaussage ) { Anweisung1; } else if( ZweiteWahrheitsaussage ) { Anweisung2; } else if( DritteWahrheitsaussage ) { Anweisung3; } else { AlternatiiveAnweisung; }
Hierbei muss man wissen, dass nur die Anweisungen des ersten If mit wahrer Aussage ausgeführt werden. Ist keine der Aussagen wahr, so werden die Anweisungen des Else ausgeführt.
String tier = "Katze"; if( tier.equals("Katze") ) { System.out.println("Katzen sind niedlich"); } else if( tier.equals("Katze") ) { System.out.println("Katzen fressen Mäuse"); } else { System.out.println("Alles außer Katzen"); }
Variante 2:
String tier = "Katze"; if( tier.equals("Katze") ) { System.out.println("Katzen sind niedlich"); } if( tier.equals("Katze") ) { System.out.println("Katzen fressen Mäuse"); } else { System.out.println("Alles außer Katzen"); }
While
while( Wahrheitsaussage ) { Anweisung; }
while( ! text.equals("quit")) {}
um auszudrücken, dass nur die Eingabe “quit” zu einem Abbruch führen soll.
import java.util.Scanner; public class Tagebuch { public static void main(String[] args) { System.out.println("Wie heißt du?"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); if(name.equals("Jan")) { System.out.println("Hallo " + name + "!"); String text = ""; String eingabe = scanner.next(); while( ! eingabe.equals("quit") ) { text = text + eingabe; eingabe = scanner.next(); } System.out.println("Eingegeben wurde: " + text); } else { System.out.println("Der Benutzer ist abgelehnt."); } scanner.close(); } }
text += eingabe;
Wir wollen uns noch eine andere Schreibweise anschauen, die genau das
selbe ergebnis bring. Hierfür bauen wir die Schleife so um, dass sie
immer wieder von vorne beginnt while(true){...}. Jetzt können wir in der
Schleife den Text einlesen und sollte die Eingabe “quit” sein, so
verlassen wir die Schleife mit dem Schlüsselwort break. Das geänderte Beispiel ist dann:
Scanner scanner = new Scanner(System.in); String text = ""; while (true) { String eingabe = scanner.next(); if(eingabe.equals("quit")) { break; } text += eingabe + "\n"; }
import java.util.Scanner; public class Tagebuch { public static void main(String[] args) { System.out.println("Wie heißt du?"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); if (name.equals("Jan")) { System.out.println("Hallo " + name + "!"); System.out.println("Bitte Text eingeben. Zum Beenden 'quit' eingeben."); // Schleife zum Einlesen des Textes String text = ""; while (true) { String eingabe = scanner.next(); // "quit" soll das Ende der Eingabe signalisieren if (eingabe.equals("quit")) { break; } text += eingabe + "\n"; } System.out.println("Eingegeben wurde: " + text); } else { System.out.println("Der Benutzer ist abgelehnt."); } scanner.close(); } }
For
Die for-Schleife ist eine verkürzte Schreibweise einer
while-Schleife, die immer dann eingesetzt werden kann, wenn es darum
geht eine bestimmte Anzahl an wiederholungen zu machen. Bevor wir uns
mit der for-Schleife beschäftigen können brauchen wir aber noch einen
neuen Datentyp mit dem wir Zahlen darstellen können. Hierfür ist der Typ
int am gebräuchlichsten. Mit ihm können ganze Zahlen gespeichert werden. Es ist möglich mit dem Operator <, zu prüfen, ob eine Zahl kleiner ist als eine Andere und zwei Zahlen können mit dem +
Operator addiert werden. Das soll uns ersteinmal genügen. Weitere
Zahlen-Datentypen und Operatoren sind im nächsten Abschnitt beschrieben.
Mit unserem neuen Datentyp und Operatoren können wir jetzt z.B. eine Reihe von Zahlen ausgeben.
int zahl = 1; while (zahl < 11) { System.out.println(zahl); zahl = zahl + 1; }
Genau hier liegt dann auch der Vorteil der for-Schleife gegenüber der while-Schleife. Das obige Beispiel lässt sich, mit ihr, sehr viel lesbarer schreiben:
for(int zahl = 1; zahl < 11; zahl = zahl + 1) { System.out.println(zahl); }
Es können also drei Anweisungen in der for-Schleife zusammengefasst geschrieben werden. Dabei muss die erste Anweisung eine Deklaration oder Initialisierung sein. Es wird die Laufvariable deklariert und initialisiert. Die zweite Anweisung ist die Wahrheitsaussage, wie wir sie aus der While-Schleife kennen. In der dritten Anweisung kann dann die Laufvariable verändert werden. Die erste und letzte Anweisung dürfen auch leer sein. Beispielsweise wäre for(; true; ) {} wieder eine Endlosschleife.