{"id":142,"date":"2018-08-03T14:00:11","date_gmt":"2018-08-03T12:00:11","guid":{"rendered":"https:\/\/freizone.net\/java-einfach-lernen\/?p=142"},"modified":"2020-05-11T19:29:40","modified_gmt":"2020-05-11T17:29:40","slug":"konsolenprogramme","status":"publish","type":"post","link":"https:\/\/freizone.net\/java-einfach-lernen\/2018\/08\/03\/konsolenprogramme\/","title":{"rendered":"Konsolenprogramme"},"content":{"rendered":"<p>Wir erstellen wir eine neue Textdatei mit Notepad. Wir nennen sie HalloWelt.java<br \/>\nNun geben wir folgendes ein und achten dabei auch auf Gro\u00df\/Kleinschreibung.<\/p>\n<pre class=\"EnlighterJSRAW\">public class HalloWelt\r\n{\r\npublic static void main(String[] args)\r\n{\r\nSystem.out.println(\"Hallo Welt!\");\r\n}\r\n}<\/pre>\n<p>nun wechseln wir in die Konsole und wechseln in das Verzeichnis in dem unsere Datei liegt (z.B. <code>C:\\Users\\USER\\Documents\\<\/code>).<br \/>\ndann kommpilieren wir die Datei mit <code>javac HalloWelt.java<\/code><br \/>\nAnschlie\u00dfend f\u00fchren wir sie mit <code>java HalloWelt<\/code> aus.<br \/>\nAls Ergebnis sollte <code>Hallo Welt!<\/code> auf dem Bildschirm erscheinen.<\/p>\n<p>Wenden wir uns nun dem Quelltext zu.<br \/>\n<code>public<\/code> bedeutet das die <code>class<\/code> \u00f6ffentlich ist. Wie wir bereits im vorherigen Kapitel kennengelernt haben ist eine class oder Klasse die Beschreibung eines speziellen Datentyps der Objekt genannt wird. Dieser Datentyp enth\u00e4lt Daten beliebiger Art und zugleich kleine Programme, Methoden genannt, die diese Daten manipulieren k\u00f6nnen. \u00d6ffentlich ist sie weil andere Objekte darauf zugreifen k\u00f6nnen. Bei gro\u00dfen Programmen ist das sp\u00e4ter wichtig und dient der Ordnung und \u00dcbersichtlichkeit.<\/p>\n<p><code>public static void main(String[] args)<\/code> ist die <em>Einstiegsmethode<\/em>\u00a0also der Punkt an dem gestartet wird<em>.<\/em>\u00a0Damit befassen wir uns gleich mehr.\u00a0<em><code>System.out.println<\/code><\/em> greift auf eine Methode des Objekts <em>out<\/em> in der Klasse\u00a0<em>System<\/em>\u00a0zu. Wir erinnern uns, eine Methode ist ein kleines Miniprogramm innerhalb einer Klasse oder einem daraus gebildeten Objekt. Neben der Methode <em>println<\/em>\u00a0kann man \u00fcber System.out auch noch die Methode\u00a0<em>print <\/em>ansprechen. Der Unterschied ist hier das println automatisch eine neue Zeile anlegt, print jedoch nicht. Andere Klassen sind f\u00fcr das Lesen von Dateien zust\u00e4ndig oder k\u00f6nnen Polygone erstellen. Eine komplette \u00dcbersicht findet man <a href=\"https:\/\/docs.oracle.com\/javase\/7\/docs\/api\/overview-summary.html\">hier<\/a>. Zu Beginn f\u00fchlt man sich schnell von der gro\u00dfen Anzahl an zur Verf\u00fcgung stehenden Klassen \u00fcberfordert. Deswegen verwenden wir St\u00fcck f\u00fcr St\u00fcck mehr dieser Klassen. Die mitgelieferten Klassen in Java nennt man <em>Klassenbibliothek<\/em>\u00a0und ist in <em>Packete <\/em>unterteilt.<em> java.lang<\/em> ist praktisch Standard und muss nicht extra eingebunden werden. Zu ihr geh\u00f6rt auch die Klasse System. Alle anderen Klassen m\u00fcssen mit<br \/>\n<code>import java.paketname.klassenname<\/code><br \/>\neingebunden werden. Wenn man alle Klassen eines Paketes importieren m\u00f6chte schreibt man hinter den Paketnamen einen Stern:<br \/>\n<code>import Paketname.*<\/code><\/p>\n<p>Jetzt besch\u00e4ftigen wir uns ein wenig genauer mit der <em>Einstiegsmethode<\/em>. Wir erstellen eine weitere Textdatei mit Notepad. Wir nennen Sie AusgabeString.java<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">public class AusgabeString\r\n  {\r\n  public static void main(String[] argumente)\r\n    {\r\n     System.out.println(\"Argumente: \" + argumente[0] + \" \" + argumente[1]);\r\n    }\r\n}<\/pre>\n<p>Wir kompilieren neu und starten wieder, allerdings mit 2\u00a0<em>Argumenten.<br \/>\n<\/em>Wir geben also ein: <code>java AusgabeString argument1 argument2<\/code><br \/>\nEs m\u00fcsste nun\u00a0<code>Argumente: argument1 Argument2<\/code><br \/>\nExperimentieren wir ein wenig damit und geben z.B. ein:\u00a0<code>java AusgabeString Guten Morgen<\/code><\/p>\n<p>Jetzt wissen wir wozu das <code>(String[] argumente)<\/code> eigentlich da ist. <code>String[]<\/code> bezeichnet ein <em>Array.\u00a0<\/em>Ein Array ist eine Variable die mehrere Variablen enth\u00e4lt. Also praktisch ein Ordner mit beliebig vielen Dateien. Nur das der Ordner hier <code>argumente<\/code> heisst und die Variablen in diesem Ordner keine eigene Namen besitzen sondern durchnumeriert sind. Hierbei ist zu beachten, das die Numerierung immer mit 0 beginnt. Das erste Feld kann durch <code>argumente[0]<\/code> angesprochen werden, das zweite durch <code>argumente[1]<\/code> usw.<br \/>\nWir k\u00f6nnen also noch mehr Argumente angeben. Nur m\u00fcssen wir daf\u00fcr sorgen da\u00df das entsprechende Feld auch gelesen wird:<br \/>\n<code>System.out.println(\"Argumente: \" + argumente[0] + \" \" + argumente[1] +\" \" + argumente[2]);<\/code><\/p>\n<p>Ein String ist immer eine Zeichenkette beliebiger Zeichen und Ziffern. Wir k\u00f6nnen auch selbst String Variablen anlegen. Dies machen wir zum Beispiel mit:<br \/>\n<code>String ersterString = \"Dies ist ein String\";<\/code><br \/>\nDiese Vorgehensweise ist bei allen Variablen dieselbe. Zuerst gibt man den Typ an gefolgt von einem Namen der anschlie\u00dfend optional ein Wert der zugewiesen werden kann. Wird der Wert weggelassen spricht man nur von einer <em>Deklaration<\/em>. Wird ein Wert zugewiesen wird die Variable auch noch<em> initialisiert.<br \/>\n<\/em><strong>Typ name;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/strong>\/\/ Deklaration<br \/>\n<strong>Typ\u00a0 name\u00a0 \u00a0 =\u00a0 \u00a0 Wert;\u00a0\u00a0<\/strong>\/\/ Initialisierung<\/p>\n<p>Wenn wir ein Array anlegen wollen schreiben wir einfach hinter der Typbezeichnung ein <code>[]<\/code>\u00a0also beispielsweise:<br \/>\n<code>String[]<\/code> x;<br \/>\nUm Daten in diesen String einzuf\u00fcgen verwendet man einen Anweisungsblock, gekennzeichnet durch die geschwungenen Klammern {} und trennt die einzelnen Strings durch Kommata. z.B.:<br \/>\n<code>String[] x = {\"Hallo\", \"Welt\", \"Ein weiterer String\", \"John Smith\"}<\/code><br \/>\n<code>System.out.println(x[0] + \" \" + x[3]);\u00a0<\/code>\u00a0\/\/ gibt &#8222;Hallo John Smith&#8220; aus.<\/p>\n<p>Nun wollen wir ein Fenster \u00f6ffnen. Legen wir eine neue Datei mit Namen erstesFenster.java an und geben folgenden Code ein:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import javax.swing.JFrame;\r\n\r\npublic class ErstesFenster extends JFrame {\r\n\r\n  public static void main(String[] args) {\r\n    \r\n  ErstesFenster fenster = new ErstesFenster();\r\n  \r\n  fenster.setVisible( true );     \/\/ macht das Fenster sichtbar\r\n  fenster.setBounds( 0, 0, 900, 500 ); \/\/ legt die Gr\u00f6\u00dfe fest (x,y,Breite,H\u00f6he)\r\n  fenster.setAlwaysOnTop( true ); \/\/ sorgt daf\u00fcr das es immer im Vordergrund bleibt\r\n  fenster.setDefaultCloseOperation( EXIT_ON_CLOSE );\/\/legt fest was nach dem Schlie\u00dfen passiert\r\n  fenster.setLocationRelativeTo( null ); \/\/ zentriert das Fenster in der Mitte des Bildschirms\r\n  \r\n  }\r\n}<\/pre>\n<p><code>extends JFrame<\/code> erweitert die class Fenster um die Klasse <code>JFrame<\/code> die ein Standard Fenster beinhaltet. Dadurch erhalten alle Objekte die wir aus unserer Klasse bilden die Methoden der Klasse JFrame. Theoretisch ben\u00f6tigt man nach der Objekterstellung nur die Methode\u00a0<code>setVisible<\/code> um das Fenster erscheinen zu lassen. Allerdings best\u00fcnde es dann nur aus der oberen Leiste und w\u00e4re sehr klein. Die Befehle sind \u00fcberwiegend selbsterkl\u00e4rend. <code>setDefaultCloseOperation<\/code>\u00a0legt fest was <em>nach<\/em> dem Schlie\u00dfen passiert. Wenn ihr diesen Befehl rausnehmt, wird das Fenster zwar geschlossen, das Programm im Speicher aber nicht beendet und belegt weiterhin Speicherplatz. Deshalb sollte immer festgelegt werden was nach dem Schlie\u00dfen passiert. In diesem Fall wird das Programm beendet.<\/p>\n<p>Nun wollen wir etwas rechnen. Wir erstellen eine neue Datei und nennen sie: Addiere.java<br \/>\nNun geben wir folgendes ein:<\/p>\n<pre class=\"EnlighterJSRAW\">public class Addiere\r\n\t{\r\n\tpublic static void main(String[] argumente)\r\n\t\t{\r\n\t\t System.out.println(\"Argumente: \" + argumente[0] + \" \" + argumente[1]);\r\n\t\t \r\n\t\t int wert1 = Integer.parseInt(argumente[0]);\r\n\t\t int wert2 = Integer.parseInt(argumente[1]);\r\n\t\t int ergebnis = wert1 + wert2;\r\n\r\n\t\t System.out.println(\"Ergebnis der Addition: \" + ergebnis);\r\n\t\t}\r\n}\r\n<\/pre>\n<p>wir kompilieren wieder die Datei mit <code>javac Addiere.java<\/code> und geben danach ein:<br \/>\n<code>java addiere 10 20<\/code><\/p>\n<p>Jetzt wissen wir wozu das <code>(String[] argumente)<\/code> eigentlich da ist. <code>String[]<\/code> bezeichnet ein <em>Array.\u00a0<\/em>Ein Array ist eine Variable die mehrere Variablen enth\u00e4lt. Also praktisch ein Ordner der Variable enth\u00e4lt. Nur das der Ordner hier <code>argumente<\/code> heisst und die Variablen diesem Ordner keine eigene Namen besitzen sondern durchnumeriert sind. Hierbei ist zu beachten, das die Numerierung immer mit 0 beginnt. Das erste Feld kann durch <code>argumente[0]<\/code> angesprochen werden, das zweite durch <code>argumente[1]<\/code> usw.<\/p>\n<p>Da die \u00fcbergebenen Daten vom Typ String sind, m\u00fcssen wir sie, um damit rechnen zu k\u00f6nnen erst in Zahlen konvertieren. Das geschieht mit <code>Integer.parseInt(argumente[0]);<\/code>\u00a0Die Klasse Integer ist fester Bestandteil von Java. Jeder Typ in Java hat eine Vielzahl von Standardmethoden mit denen er manipuliert oder eben konvertiert werden kann. Diese Typen werden auch <em>primitive Datentypen genannt<\/em>. Hier eine <a href=\"https:\/\/freizone.net\/java-einfach-lernen\/2018\/09\/17\/datentypen\/\">\u00dcbersicht<\/a><\/p>\n<p>Die eigentliche Rechnung ist denkbar einfach:\u00a0<code>int ergebnis = wert1 + wert2;<\/code><\/p>\n<p>Die h\u00e4ufigste Datentyp-Art die anzutreffen ist, ist Integer. Mit Integer und String werden wir auch am h\u00e4ufigsten arbeiten. Modifizieren wir nun das Programm noch etwas:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">public class Addiere\r\n  {\r\n  public static void main(String[] argumente)\r\n    {\r\n     for(int i=0;i&lt;argumente.length;i++)\r\n     System.out.println(\"Argument: \" + argumente[i]);\r\n     \r\n     int wert1 = Integer.parseInt(argumente[0]);\r\n     int wert2 = Integer.parseInt(argumente[1]);\r\n     int ergebnis = wert1 + wert2;\r\n\r\n     System.out.println(\"Ergebnis der Addition: \" + ergebnis);\r\n    }\r\n}<\/pre>\n<p><code>for(int i=0;i&lt;argumente.length;i++)<\/code>\u00a0ist eine for-Schleife. Normalerweise setzt man danach einen Anweisungsblock mit den geschwungenen Klammern <code>{...}<\/code>\u00a0Wenn aber die for-Schleife nur eine einzige Anweisung hat, kann man diese Klammern auch weglassen. Die Definition einer solchen Schleife ist folgenderma\u00dfen:<br \/>\n<code>for(z\u00e4hlername; Bedingung; Z\u00e4hlerschritte)<\/code><br \/>\nDie Z\u00e4hlerschritte nennt man auch Inkrement\/Dekrement. Inkrement bezeichnet die Erh\u00f6hung des Z\u00e4hlers, Dekrement das Herabz\u00e4hlen des Z\u00e4hlers. Das Array <code>Argumente<\/code>\u00a0hat, wenn wir z.B. drei Angaben gemacht haben, die L\u00e4nge 3. Die L\u00e4nge kann mit arrayname.length abgefragt werden.<\/p>\n<p>Wir definieren also die Variable i als Integer und weisen ihr den Wert 0 zu. Da wir als Bedingung f\u00fcr die Ausf\u00fchrung der Schleife angeben das i kleiner als die L\u00e4nge des Array sein muss, greift das Inkrement i++ sobald die Schleife einmal durchlaufen wurde. Dies bedeutet das i um eins erh\u00f6ht wird. Wir k\u00f6nnten statt i++ auch i = i+1 schreiben.<br \/>\nDa wir bei argumente[i] statt einer Zahl die Variable i eingef\u00fcgt haben gibt System.out im ersten Durchgang nun das argument[0] aus.\u00a0 Danach wird 0 um eins erh\u00f6ht und die zweite Runde beginnt. Da ein Array immer mit 0 beginnt, w\u00e4re bei drei eingegebenen Argumenten beim Z\u00e4hlerstand 2 Schluss.<\/p>\n<p>Beachten wir auch das eine Variable immer zuerst initialisiert werden muss, bevor sie verwendet werden kann. <code>for(i=0<\/code> w\u00fcrde nicht funktionieren, da der Compiler nicht weiss ob er darin Strings oder Zahlen speichern soll. Daher muss es <code>for(int i=0<\/code> heissen.<\/p>\n<p>Als n\u00e4chstes wollen wir ein Fenster erstellen und ein einfaches &#8222;Hallo Welt&#8220; dort ausgeben.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir erstellen wir eine neue Textdatei mit Notepad. Wir nennen sie HalloWelt.java Nun geben wir folgendes ein und achten dabei auch auf Gro\u00df\/Kleinschreibung. public class HalloWelt { public static void main(String[] args) { System.out.println(&#8222;Hallo Welt!&#8220;); } } nun wechseln wir in die Konsole und wechseln in das Verzeichnis in dem unsere Datei liegt (z.B. C:\\Users\\USER\\Documents\\). [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/posts\/142"}],"collection":[{"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":18,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/posts\/142\/revisions"}],"predecessor-version":[{"id":822,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/posts\/142\/revisions\/822"}],"wp:attachment":[{"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/media?parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/categories?post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/freizone.net\/java-einfach-lernen\/wp-json\/wp\/v2\/tags?post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}