Umsetzungshilfe Java Teil 1 Name 1 AnPr Klasse Datum Allgemeines In unseren Programmen werden Daten eingegeben, verarbeitet und wieder ausgegeben (EVA-Prinzip). Da wir am Anfang noch keine sehr umfangreichen Programme erstellen, sind die drei Bereiche noch nicht in einzelne Unterprogrammstrukturen zu gliedern. Trotzdem sollte darauf geachtet werden, dass die grundsätzliche Struktur erkennbar bleibt. In dieser Umsetzungshilfe sollen Zusatzinformationen vor allem für die Einund Ausgabe erklärt werden, so dass sie einfach in Ihren Programmen angewendet werden können. Da unsere Programme sich im Wesentlichen auf die Verarbeitung konzentrieren, wird an dieser Stelle jedoch nur auf sehr einfache Funktionalitäten der Ein- und Ausgabe eingegangen. Java bietet sehr viel mehr als die hier gezeigten Möglichkeiten – das hier dargestellte soll jedoch für unsere ersten Programme ausreichen. 2 Ausgabemöglichkeiten 2.1 Konsolenausgeben Die einfachste Möglichkeit Daten anzuzeigen ist über die Konsolenausgabe. Der Befehl hierzu ist System.out.println(): public class AusgabeTest1 { public static void main(String[] args) { String sAusgabe = "Meine Ausgabe"; System.out.println(sAusgabe); } } In dem oberen Codebesipiel wird in einer Stringvariablen ein Wert abgelegt und anschließend der Inhalt der Stringvariablen ausgegeben. Der Befehl println bewirkt, dass nach der Ausgabe ein Zeilenumbruch erfolgt. Wenn man dies nicht möchte, so muss man über den Befehl System.out.print() gehen. Wenn innerhalb eines Strings ein Zeilenumbruch erfolgen soll, so erreicht man dies mit „\n“: public class AusgabeTest2 { public static void main(String[] args) { String sAusgabe = "Zeile1\nZeile2"; System.out.println(sAusgabe); } } ANPR_UmsetzungshilfeJava1_v01.docx Seite 1 Umsetzungshilfe Java Teil 1 AnPr 2.2 Popup Information Eine weitere Möglichkeit ist ein einfaches Popup Fenster zu erzeugen: import javax.swing.JOptionPane; public class AusgabeTest3 { public static void main(String[] args) { String sAusgabe = "Meine Ausgabe"; JOptionPane.showMessageDialog(null, sAusgabe); } } Im gezeigten Code wird ein einfacher Dialog erzeugt und der sAusgabe String angezeigt. Der erste Parameter der Methode, welcher mit „null“ belegt ist dient für die Referenz zu einem darunterliegenden Dialog und ist für uns momentan nicht wichtig, da wir noch keine grafisch orientierten Programme schreiben. 3 Eingabemöglichkeiten 3.1 JOptionPane.showInputDialog() Die einfachste Möglichkeit, dem User eine Eingabe abzuverlangen die Methode „showInputDialog()“ in der Klasse „JOptionPane“. Die Methode liefert ein Popup Fenster, in dem eine Eingabe erfolgt. Der eingegebene Wert wird von der Methode an den Aufrufer zurückgegeben. Folgender Code soll dies verdeutlichen: import javax.swing.JOptionPane; public class EingabeTest1 { public static void main(String[] args) { String sEingabe = JOptionPane.showInputDialog("Bitte Eingabe:"); System.out.println(sEingabe); } } Bei Start des Programms erscheint ein Popup Fester, dessen Text „Bitte Eingabe“ aus dem Parameter des Methodenaufrufs entnommen wurde: Wenn nun der Text „Hallo“ eingegeben wird und auf „OK“ geklickt wird, so erscheint der Text „Hallo“ in der Konsole. Dies liegt daran, dass in eine Stringvariable (namens sEingabe) deklariert wurde, in die der Wert abgespeichert wurde, welcher von der Methode showInputDialog() zurückgegeben wurde. Dies ist der eingegebene Text. Wird auf „Abbrechen“ geklickt, so wird der Wert null zurückgegeben, was soviel heißt wir „nichts“. Die Methode showInputDialog() gibt es noch in vielen anderen Variationen, für uns jedoch reicht die hier beschriebene aus. 3.2 Konsoleneingaben Eine weitere Möglichkeit ist, die Eingabe direkt über die Konsole zu bewerkstelligen. Die Methode ist zwar komplizierter, wird jedoch von manchen Schülern vorgezogen, da die Ausgaben bei uns im Regelfall über System.out.println() ebenfalls über die Konsole erfolgt. Seite 2 AnPr Umsetzungshilfe Java Teil 1 Java bietet auch hier mehrere Möglichkeiten an, über die Konsole Werte einzugeben. Hier der gängigste über den BufferedReader, welcher einen Eingabestrom einliest: import java.io.*; public class EingabeTest2 { public static void main(String[] args) { BufferedReader bfrd = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Bitte Eingabe: "); String sEingabe = ""; try { sEingabe = bfrd.readLine(); } catch (IOException e) { e.printStackTrace(); } System.out.println(sEingabe); } } Zuerst wird der BufferedReader erzeugt, wobei ihm über den Parameter (System.in) mitgeteilt wird, dass der Datenstrom der Standard Input Stream ist, was üblicherweise die Tastatur ist. Der try/catch Bereich ist lediglich zum Abfangen von möglichen Fehlersituationen und über printStackTrace() ausgegeben wird. Wichtig ist bfrd.readLine(); in der die Tastatureingabe gelesen wird und der Wert in den String „sEingabe“ übergeben wird. 4 String nach Zahlen parsen Eingaben werden im Regelfall als String Wert zurückgegeben. Um nun eine Zahlenvariable daraus zu machen müssen die Strings geparst werden. 4.1 String zu ganzen Zahlen Der Datentyp für ganze Zahlen ist üblicherweise int. Folgender Code wandelt einen String in eine int Zahl um und beweist dies mit der Ausgabe eines Rechenergebnisses: public class Stringwandlung1 { public static void main(String[] args) { String sZeichenkette = "2"; int iZahl = Integer.parseInt(sZeichenkette); System.out.println(iZahl + 10); } } 4.2 String zu Gleitkommazahlen Der Datentyp für Gleitkommazahlen ist üblicherweise double. Folgender Code wandelt einen String in eine double Zahl um und beweist dies mit der Ausgabe eines Rechenergebnisses: public class Stringwandlung1 { public static void main(String[] args) { String sZeichenkette = "2"; double dZahl = Double.parseDouble(sZeichenkette); System.out.println(dZahl + 10.0); } } Seite 3 Umsetzungshilfe Java Teil 1 5 AnPr Stringvergleiche Strings können nicht mit dem „normalen“ Vergleichsoperator verglichen werden, da sie Objekte sind, und somit der Vergleichsoperator nur die Gleichheit der Objekte, nicht deren Inhalte prüft. Um nun zu prüfen, ob ein String den gleichen Inhalt hat wie ein zweiter String, ist die Methode .equals() anzuwenden: import javax.swing.JOptionPane; public class StringvergleichTest1 { public static void main(String[] args) { String sEingabe = JOptionPane.showInputDialog("Bitte Ja eingeben:"); if (sEingabe.equals("Nein")) { System.out.println("Wer hat was von Nein gesagt?"); } } } Im oben genannten Code wird in der Verzweigung geprüft, ob der User „Nein“ eingegeben hat, in der sEingabe Variable also der Wert „Nein“ steht. 6 Zufallszahlen Wenn der Computer per Zufall einen Wert ermitteln soll, ist hier die Bibliotheksklasse „Random“ zu verwenden. Sie ermöglicht pseudozufällige Zahlen zu erzeugen. import java.util.Random; public class ZufallTest1 { public static void main(String[] args) { Random myRnd = new Random(); int iRandom = 0; for (int i = 0; i < 20; i++) { iRandom = myRnd.nextInt(6); System.out.println(iRandom); } } } Um diese zu nutzen, muss zuerst am Anfang des Programms ein Random Objekt „new Random()“ erzeugt werden. Das erzeugte Random Objekt wird mit der aktuellen Systemzeit als Millisekundenwert initialisiert. Basierend darauf wird eine Pseudozufallszahl erzeugt. Diese kann nun pro Durchlauf abgerufen werden. Im gezeigten Code wird eine Zufallszahl zwischen 0 und 5 ausgegeben, da die Zufallszahlerzeugung mit dem Parameter „6“ aufgerufen wird. Seite 4 AnPr 7 Umsetzungshilfe Java Teil 1 Lizenz Diese(s) Werk bzw. Inhalt von Maik Aicher (www.codeconcert.de) steht unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Seite 5