Übungsblatt 2 Java Vorkurs (WS 2015) Aufgabe 1 Logische Operatoren Manchmal ist es wichtig zwei Werte miteinander zu vergleichen. Dazu gibt es in Java folgende Vergleichsoperatoren: Text Math. Zeichen Java größer als > > kleiner als < < gleich = == // einfaches = ist in Java eine Zuweisung ungleich! = größer gleich >= kleiner gleich <= Lege ein neues Projekt mit einer neuen Klasse Logik an und erstelle eine main-methode in der Klasse Logik und füge in der main-methode eine println Anweisung ein. Teste nun folgende Kombinationen in der println Anweisung (sowie mit <, >= und <= anstelle von > ). 1 1 > 2 2 2 > 1 3 2 > 2 4 2 > 2. 0 5 2. 0 1 > 2 6 1 > 0 7 1 > 2 Teste auch! = anstelle von == 1 1 == 1 2 1 == 1. 0 3 1 == 1.00001 4 1 == 1. 0000000000000000000000000000001 5 6 // e i n e 0 Unterschied 7 0. 0000000000000000000000000001 == 0. 00000000000000000000000000001 8 9 // wie oben, nur 1, s t a t t 0. 10 1. 0000000000000000000000000001 == 1. 00000000000000000000000000001 Wenn man zwei Vergleiche voneinander abhängig betrachten möchte (beide Vergleiche liefern true zurück), muss man die Ergebnisse der Vergleiche mit logischen Operatoren verbinden: und && Achtung kein einfaches und in Java verwenden, das macht etwas anderes (aber ähnliches) oder nicht verwenden (analog zu und) nicht! Zum Testen der Operatoren kannst du true und false direkt verwenden. Fülle die folgenden Tabellen für die Operatoren!, && und aus:
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 2 von 9 A!A true false A B A && B false false false true true false true true A B A B false false false true true false true true Anhang: Vergleiche von Strings: Man sollte beim Vergleichen von Strings (und Objekten) niemals den == Operator verwenden (Ausnahmen gibt es nur sehr wenige): Teste folgenden code: 1 S t r i n g s1 = h a l l o ; 2 S t r i n g s2 = h a l l o ; 3 4 System. out. p r i n t l n ( s1 ) ; 5 System. out. p r i n t l n ( s2 ) ; 6 System. out. p r i n t l n ( s1 == s2 ) ; Im Vergleich zu: 1 S t r i n g s1 = h a l l o ; 2 S t r i n g s2 = new S t r i n g ( h a l l o ) ; 3 4 System. out. p r i n t l n ( s1 ) ; 5 System. out. p r i n t l n ( s2 ) ; 6 System. out. p r i n t l n ( s1 == s2 ) ; Um Strings zu vergleichen sollte man deshalb immer die.equals() Funktion benutzen: 1 System. out. p r i n t l n ( s1. e q u a l s ( s2 ) ) ; Aufgabe 2 Arrays Benötigt man viele Variablen vom gleichen Typ, dann kann man in Java Arrays nutzen. Lege dafür zunächst eine neue Klasse Arrays mit main-methode an. Deklariere nun ein Array vom Typ int mit dem Namen testarray. Dazu nutzt man fast die gleiche Syntax wie beim Deklarieren einer Variable vom Typ int. Lediglich zwei eckige Klammern werden hinzugefügt: 1 i n t [ ] t e s t A r r a y ; Füge auch eine Ausgabe von testarray mit println hinzu. Das Programm lässt sich nicht ausführen, da der Variable noch kein Wert zugewiesen wurde. Das können wir ändern: 1 i n t [ ] t e s t A r r a y = { 1, 2, ; Achtung: Diese Notation kann man nur in der Zeile der Deklaration verwenden!! In der Konsole sollte nun etwas wie [I@1e16a377 erscheinen, wenn man das Programm ausführt. Das liegt daran, dass println nicht weiß, was es mit dem Inhalt eines Arrays machen muss um es schön darzustellen. Du kannst die Größe des Arrays über testarray.length auslesen. Einzelne Elemente bekommst du indem du den Index des Elements in eckige Klammern schreibst: testarray[1] Bei testarray[1] bekommt man allerdings das zweite Element aus dem Array. Dies liegt daran, dass in Java (und in fast allen anderen Programmiersprachen) Indizes mit 0 beginnen! Du kannst einzelne Werte in deinem Array verändern, indem du wie beim Auslesen den Index der entsprechenden Stelle in eckige Klammern schreibst: testarray[1] = 5; Teste nun folgenden Code: 1 i n t [ ] t e s t A r r a y = { 1, 2, ; 2 i n t [ ] t e s t A r r a y 2 = t e s t A r r a y ; 3 4 t e s t A r r a y [ 1 ] = 5 ; 5 6 System. out. p r i n t l n ( t e s t A r r a y 2 [ 1 ] ) ;
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 3 von 9 Obwohl wir testarray2 nie verändert haben, hat sich die Änderung von testarray auch auf testarray2 ausgewirkt. Die beiden Variablen teilen sich also dieselben Daten. Außerdem heißt das, dass man Arrays in Place also an Ort und Stelle verändern kann. Um dieses Problem zu umgehen kann man testarray.clone() nutzen. Wenn man zehn Variablen braucht mag int[] testarray = {1,2,3}; ja noch ok sein, aber bei hundert wird es schnell zu aufwändig und unübersichtlich. Deshalb kann man auch einfach nur sagen, wie viele Plätze das Array haben soll: int[] testarray = new int[26]; Jetzt kann man die einzelnen Stellen zu einem späteren Zeitpunkt befüllen. Aufgabe 3 Verzweigungen In Aufgabe 1 hast du Vergleiche kennen gelernt. Jetzt sollst du diese Vergleiche benutzen, um das Programm zu steuern. Dazu gibt es die if-anweisung in Java: 1 i f ( b o o l e a n V a r i a b l e ) { 2 // code goes i n here Der Code innerhalb der if-anweisung wird dabei nur ausgeführt, wenn der Wert von booleanvariable true ist. Du kannst booleanvariable auch durch Vergleiche ( 2 < 4 ) oder logische Ausdrücke (true && false) ersetzen. Lege eine neue Klasse Verzweigungen mit eigener main-methode an. Lege in der main-methode drei Variablen vom Typ int mit unterschiedlichen Werten an. Schreibe einen if Block, der Zurück auf der Konsole ausgibt, wenn var1 > var2 gilt. Schreibe einen if Block, der in die auf der Konsole ausgibt, wenn var1 <= var2 gilt. Schreibe einen if Block, der Zukunft auf der Konsole ausgibt, wenn var1! = var3 gilt. Versuche jetzt verschiedene Werte für die Variablen aus. Schaffst du es Zurück in die Zukunft auszugeben, ohne die if-blöcke zu verändern? Die ersten beiden if-blöcke schließen sich gegenseitig aus. Das wenn der erste Block ausgeführt wird, dann kann der Zweite nicht mehr ausgeführt werden und anders herum. Dafür gibt es in Java das else-schlüsselwort: 1 i f ( a > b ) { 2 Anweisung1 ; 4 5 i f ( a <= b ) { 6 Aweisung2 ; 7 } lässt sich durch Folgendes ersetzen: 1 i f ( a > b ) { 2 Anweisung1 ; e l s e { 4 Aweisung2 ; 5 } Wenn man mehrere if s verketten möchte kann man auch folgende, kürzere, Syntax verwenden: 1 i f ( a > 10 ) { 2 Anweisung1 ; e l s e i f ( a < 1 ) { 4 Aweisung2 ; 5 } e l s e { 6 Anweisung3 ; 7 } Verändere die main-methode so, dass Hello Java ausgegeben wird, wenn die erste Variable einen Wert größer als 85 hat. Falls die erste Variable kleiner oder gleich 85 ist soll We need to start the
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 4 von 9 engine! ausgegeben werden, falls die zweite Variable kleiner als die dritte Variable ist. Ansonsten soll Back to the future! ausgegeben werden. Wenn man viele Verzweigungen testen soll, dann kann man in Java switch-case benutzen: 1 i n t i = 0 ; 2 3 switch ( i ) { 4 c a s e 1 : 5 Anweisung1 1 ; 6 Anweisung1 2 ; 7 break ; 8 c a s e 2 : 9 Anweisung2 ; 10 break ; 11 d e f a u l t : 12 AnweisungDefault ; 1 In der ersten Zeile gibt man dabei die Variable an, die man testen möchte. (switch (i)) Innerhalb der geschweiften Klammern stehen dann die Fälle. Ein Fall besteht aus dem Schlüsselwort case, dem Wert auf den getestet wird z. B. 1, einem Doppelpunkt, einer oder mehreren Anweisungen und ganz wichtig: wird von einer break; Anweisung abgeschlossen. Es gibt noch einen speziellen Fall, den default Fall. Die Anweisungen hinter dem default Fall werden dann ausgeführt, wenn kein anderer Fall ausgeführt wurde. Füge den obigen Code in die main-methode ein. Ersetze die Anweisungen in den cases durch println(1); und println(2); und println("default"); Teste den Code mit folgenden Werten für i: 0,1,2,3,-100, 237 Fehlerquellen: Semikolons, break; vergessen, Lösche nun mal zum Testen das break von case 1: Erwartung alle Anweisungen zwischen case 1: und dem nächsten break; werden ausgeführt. Ändere das switch case so ab, dass es zu den Zahlen von 0 bis 15 den Wert als Wort in die Konsole schreibt: z. B. 1 eins Für alle anderen Zahlen soll entweder Zahl zu groß, oder Zahl zu klein ausgegeben werden. Aufgabe 4 Schleifen Erstelle eine neue Klasse Wiederholungen mit eigener main-methode. Das Programm soll zehn mal in der Konsole Back to the future ausgeben. Das Ganze kann man einfacher machen. Mit Schleifen: 1 i n t i = 0 ; 2 3 w h i l e ( i < 10) { 4 System. out. p r i n t ( i ) ; 5 System. out. p r i n t l n ( Back to the f u t u r e ) ; 6 } 7 8 System. out. p r i n t ( i ) ; Wenn du das Programm jetzt ausführst solltest du dir zuerst nochmal ansehen, wo der Stopp Button ist. Das liegt daran, dass die Variable i noch nicht verändert wird. Füge eine Zeile am Ende der Schleife ein, die die Variable hochzählt. Was ist der Unterschied, wenn du diese Zeile am Anfang der Schleife einfügst. Wird der Schleifeninhalt auch ausgeführt wenn i von Anfang an 10 ist? Die while Schleife wird solange ausgeführt, wie die Scheifenbedingung (oben i < 10) wahr ist. Ändere die Schleifenbedingung zu Math.random()>0.1 Die Schleife sollte nun bei jedem mal unterschiedlich oft durchlaufen. In einer while Schleife muss man sich selbst um Zählvariablen bemühen, wenn man etwas zählen will. Da man sehr häufig etwas zählen muss gibt es in Java die for Schleife:
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 5 von 9 1 f o r ( i n t a = 0 ; a < 1 0 ; a++) { 2 System. out. p r i n t l n ( a ) ; Dieser Code ist äquivalent zu 1 i n t a = 0 ; 2 w h i l e ( a < 10) { 3 System. out. p r i n t l n ( a ) ; 4 a++; // a = a + 1 ; 5 } Anmerkungen: Die Variable a ist nur innerhalb der for Schleife zugänglich. Der Operator ++ ist sehr gefährlich und sollte am besten nur in Schleifen oder in einer eigenen Zeile verwendet werden. a++ bedeutet a = a+1 Erstelle eine for Schleife, die von 0 auf 88 mph beschleunigt und jeweils die Geschwindigkeit ausgibt. Schreibe eine while Schleife, die von 88 mph abbremst, indem sie immer die Geschwindigkeit halbiert. Auch in der for Schleife kann man andere Anweisungen als a++ verwenden um die Schleifenvariable zu verändern. Versuche die letzte while Schleife in eine for Schleife umzuwandeln. for Schleifen kann man sehr gut nutzen, um über Arrays zu iterieren (es Element für Element zu traversieren). Erstelle eine neue Klasse Schleifen mit eigener main-methode. Erstelle in der main-methode ein String Array alphabet der Länge 10 mit den ersten 10 Buchstaben des Alphabets. Gib nun die ersten 10 Buchstaben des Alphabets mit Hilfe einer for Schleife aus. Hinweis: Die Länge eines Arrays lässt sich mit der Methode.length auslesen. Verlängere das Array um 5 weitere Buchstaben. Wenn du die Schleife mit array.length gestaltet hast, solltest du nichts weiter ändern müssen. Es gibt in Java für Arrays sogar noch eine schönere Möglichkeit alle Elemente einzeln auszulesen: 1 f o r ( S t r i n g s : alphabet ) { 2 System. out. p r i n t l n ( s ) ; Die Schleifenvariable s nimmt dabei nacheinander die Werte aus dem Array an. Teste, ob sich alphabet ändert, wenn man s einen neuen Wert zuweist. Aufgabe 5 Methoden und Rückgabewerte Oft möchte man Code zwar wiederverwenden, aber an einer späteren Stelle. Dafür gibt es in Java Methoden. Die einfachste Methode sieht so aus: 1 p u b l i c s t a t i c void methodenname ( ) { 2 // Anweisungen Die Schlüsselwörter public, static und void ignorieren wir erst einmal. Erstelle eine neue Klasse mit dem Namen Methoden mit eigener main-methode. Erstelle eine neue Methode, die Wir schicken dich zurück..., zurück in die Zukunft! auf der Konsole ausgibt. Du kannst diese Methode zukunft nennen. Rufe die Methode zukunft in der main-methode auf und führe das Programm aus.
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 6 von 9 Ändere die Methode zukunft so ab, dass sie erst einen Countdown von 10 runter zählt. (Nutze eine Schleife) Einfach nur den gleichen Code unverändert zu benutzen ist aber noch recht eingeschränkt. Man kann einer Methode auch Informationen mitgeben. Dazu muss man typ und name in den runden Klammern bei der Methodendefinition eingeben: 1 p u b l i c s t a t i c void zukunft ( i n t i ) {... } Das Programm lässt sich jetzt nicht mehr ausführen, da man den Methodenaufruf auch entsprechend anpassen muss: zukunft(10); Tausche nun die Schleifenvariable durch den Parameter i der Methode zukunft aus. Rufe die Methode zukunft einmal mit 10 und einmal mit 3 als Argument auf. Du kannst auch mehrere verschiedene Parameter benutzen: 1 p u b l i c s t a t i c void einemethode ( i n t a, double b, S t r i n g t e x t ) {... } Man könnte jetzt auf die Idee kommen, dass man eine lange Berechnung einfach in eine Methode zu packen, aber wie bekommt man das Ergebnis zurück? Dazu muss man das Schlüsselwort void austauschen. void sagt einfach nur aus, dass die Methode nichts zurückgibt. Man kann statt void jeden beliebigen Datentyp (int, double, String, etc.) angeben. Hat man einen Datentyp angegeben, dann muss man auch etwas zurückgeben. Dies macht man mit dem return statement: 1 p u b l i c s t a t i c i n t einemethode ( i n t a ) { 2 r e t u r n a + 1 ; Anmerkung: return; ohne einen Rückgabewert kann man auch verwenden um eine Methode mit dem Rückgabetyp void vorzeitig zu unterbrechen. Schreibe eine Methode die eine beliebige Zahl quadriert. Schreibe eine Methode, die den Kreisumfang zurückgibt. Du kannst für π Math.PI benutzen. Schreibe eine Methode, die den Flächeninhalt eines Rechtecks berechnet. Aufgabe 6 Fakultät: Schleifen Erstelle eine neue Klasse mit dem Namen Fakultät und einer main-methode. Diese main-methode soll eine long Variable mit dem Namen zahl haben und die Fakultät dieser Zahl berechnen und anschließend auf der Konsole ausgeben. Verwende den Datentyp long für die Variablen. Wieso macht die Verwendung diesen Datentyps hier Sinn? Aufgabe 7 summa summarum: Schleife Erstelle eine neue Klasse mit dem Namen Summe und einer main-methode. Diese main-methode soll eine int Variable mit dem Namen zahl haben und die Summe aller Zahlen (startend bei 0) bis zu einschließlich dieser Zahl berechnen. Das Ergebnis soll anschließend auf der Konsole ausgegeben werden. (Bspw: zahl=10, Ausgabe: 55) Aufgabe 8 Quadrieren Schreiben Sie ein Programm, welches die Werte für i und i 2 ausgibt. i {1, 2, 3,..., 20} i {170, 171,..., 190} Aufgabe 9 Anwendung von Schleifen Auf einem Konto sind 450 Euro. Wie viele Jahre dauert es, bis das Guthaben verdoppelt ist, wenn die Bank jährlich einen Zinssatz von 1.4% bezahlt.
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 7 von 9 Aufgabe 10 User Input Bis jetzt hast du alle Eingaben direkt in den Code schreiben müssen und konntest nicht auf etwaige Eingaben reagieren. Allerdings ist es auch in Java möglich Eingaben über die Konsole einzulesen und im Programm zu verwenden. Erstelle zunächst eine neue Klasse KonsolenEingabe mit eigener main-methode. Du kannst dann folgende Methoden verwenden, um einen String, int oder einen double auszulesen: 1 // L i e s t e i n e n i n t Wert e i n und w e i s t ihn z a h l zu 2 i n t z a h l = UserInput. r e a d I n t ( ) ; 3 4 // L i e s t e i n e n double Wert e i n und w e i s t ihn f z a h l zu 5 double f z a h l = UserInput. readdouble ( ) ; 6 7 // L i e s t e i n e n S t r i n g e i n und w e i s t ihn t e x t zu 8 S t r i n g t e x t = UserInput. r e a d S t r i n g ( ) ; Achtung: Wenn du einen double aus der Konsole auslesen willst, dann kann es sein, dass du das normale Komma statt dem englischen Punkt benutzen musst! Bemerkung: Die obigen Funktionen musst du jetzt noch nicht verstehen. Du kannst sie einfach in jede Klasse kopieren, in der du auch die Variable scanner auf die oben beschriebene Weise erstellt hast. Du musst sie dann nur noch aufrufen, wann immer du eine Eingabe vom Nutzer haben möchtest. Schreibe einen Echobot, der dir alles nochmal in der Konsole ausgibst, was du schreibst. Benutze dafür die readstring Methode. Vergiss nicht am Anfang des Programms einen Hinweis für den Benutzer auf der Konsole auszugeben, dass das Programm bereit ist. Schreibe ein Programm, dass den Flächeninhalt eines Rechtecks berechnet. Nutze dazu die readint Funktion um die Eingaben zur Laufzeit machen zu können. Ändere obiges Programm so, dass es readdouble verwendet. Aufgabe 11 Rekursion: Verzweigungen, Schleifen, Funktionsaufrufe Stell dir vor du startest mit den Zahlen 2 und 1. Die jeweils nächste Zahl ergibt sich aus dem Quotient der vorherigen Zahlen. Erstelle eine Funktion mit dem Namen quotientenreihe, die einen int Parameter bekommt, welcher angibt die wie vielte Zahl dieser Reihe berechnet werden soll. Der Rückgabewert dieser Funktion ist ein double, welcher den Wert des n-te Reihenglieds wiedergibt. Aufgabe 12 Ratespiel: Funktionsaufruf, Verzweigungen, Schleifen Erstelle eine neue Klasse Ratespiel mit einer main-methode. Diese soll sich eine Zufallszahl zwischen 0 und 100 ausdenken, die der Nutzer nun erraten muss. Der Nutzer gibt eine Zahl ein, das Programm reagiert entsprechend mit der Ausgabe Zahl zu groß, Zahl zu klein oder Glückwunsch!. Gibt das Programm Zahl zu groß oder Zahl zu klein fragt es den Nutzer nach einer neuen Zahl, bis dieser die Zahl erraten hat. Aufgabe 13 Maximum Schreibe eine neue Methode mit dem Namen maximum, diese Methode bekommt zwei int Parameter übergeben und soll die größere Zahl als zurückgeben. Schreibe eine neue Methode mit dem Namen maximumvier, die vier int Parameter übergeben bekommt und die größte zurückgeben soll. Schreibe eine neue Methode mit dem Namen maximumviera, die das selbe Problem wie in b löst, dafür allerdings die Methode aus Aufgabe a verwendet und selbst keine Zahlen vergleicht Aufgabe 14 Median, Durchschnitt, Arrays Erstelle für diese Aufgabe eine neue Klasse MedianAvgAr mit einer main-methode Schreibe eine Methode mit dem Namen average, die ein int Array als Parameter übergeben bekommt und den Durschschnitt der Werte in diesem Array zurückgibt. Schreibe eine Methode minausarray, die ein int Array übergeben bekommt und das kleinste Element daraus zurückgibt Schreibe eine Methode mit dem Namen median, die 3 Parameter übergeben bekommt und den Median (das mittlere Element) zurückgibt.
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 8 von 9 Aufgabe 15 Schleifen, Verzweigungen und boolsche Operatoren Erstelle eine neue Klasse mit dem Namen Rechnungen und einer main-methode. (d) Erstelle eine Methode mit den Namen primfaktorzerlegung, die einen Parameter vom Typ int übergeben bekommmt und keinen Rückgabewert besitzt. Diese Methode soll eine Primfaktorzerlegung auf die als Parameter übergebene Zahl durchführen und die Primfaktoren auf der Konsole ausgeben. Erstelle eine weitere Methode mit dem Namen ggt, die zwei Parameter vom Typ int übergeben bekommt und einen Rückgabewert vom Typ int besitzt. Diese Methode soll den größten gemeinsamen Teiler der beiden Zahlen berechnen und zurückgeben. Erstelle eine weitere Methode mit denm Namen kgv, die zwei Parameter vom Typ int übergeben bekommt und einen Rückgabewert vom Typ int besitzt. Diese Methode soll das kleinste gemeinsame Vielfache der beiden Zahlen berechnen und zurückgeben. Erstelle eine weitere Methode mit dem namen isinrange, die drei Parameter vom Typ int übergeben bekommt und einen Rückgabewert vom Typ boolean besitzt. Die Methode soll prüfen ob der letzte Parameter zwischen den ersten beiden liegt und dementsprechend true oder false zurübergeben. Aufgabe 16 Würfel: Methoden Erstelle eine neue Klasse mit dem Namen Wuerfel und einer main-methode. Diese main-methode soll einen Würfel simulieren, der zwei mal geworfen wird und die Augenzahlen jeweils auf der Konsole ausgeben. Hinweis: Um eine Zufallszahl in Java zu generieren kann die Methode Math.random() benutzt werden, diese liefert einen Wert vom Typ double im Wertebereich [0, 1) zurück. Aufgabe 17 Logik: Boolsche Operatoren Was ist der Wert des Ausdrucks? 1! ( ( t r u e! ( 3 / 2 + 4 < 5) ) && (1 < 2 && 2 > 3 t r u e ) ) Überprüfe deine Antwort in dem du ein Programm schreibst, dass die Lösung ausgibt. Aufgabe 18 Fibonacci: Array, Schleifen Schreibe ein Programm, dass die 50. Fibonacci Zahl iterativ berechnet und gebe diese aus Speichere alle vorherhigen Zahlen in einem Array Aufgabe 19 for-schleifen Schreiben Sie ein Java-Programm, dass die folgenden Summen oder Produkte berechnet (d) (e) n i=1 1 i n i=x i n i=0 ( x i j=1 j) n i=1 i i ungerade n i=1 ( 1) (i+1) i Aufgabe 20 Schachbrett Ein Schachbrett besteht aus einen 8x8 großen Spielfeld, das abwechselnd aus schwarzen und weißen Feldern besteht. Entwerfe einen Algorithmus, der Schachbrett auf der Konsole ausgibt. Fürs Spielfeld wird hierfür ein ganzzahliges, zweidimensionales Array definiert. Als Werte für weiß soll hierbei 1, für schwarz 0 verwendet werden. Aufgabe 21 Umformung von Schleifen Formen Sie die folgenden for-schleifen in äquivalente while-schleifen um. a 1... 2 f o r ( i n t i = X; i >= 0 ; i ) { 3 r e s u l t = r e s u l t i ; 4 } 5...
Java Vorkurs (WS 2015) Übungsblatt 2 Seite 9 von 9 a 1... 2 f o r ( i n t i = 0 ; i!< X; ++i ) { 3 z = ( 1 + 2 i ) ; 4 System. out. p r i n t l n ( z ) ; 5 } 6... a 1... 2 f o r ( i n t i = 1 ; i <= X; ++i ) { 3 f o r ( i n t j = 1 ; j <= i ; ++i ) { 4 i f ( i % j == 0 ) { 5 System. out. p r i n t ( j + ) ; 6 } 7 } 8 System. out. p r i n t l n ( ) ; 9 } 10... Aufgabe 22 Wörter drehen Schreibe ein Programm, das ein Wort umdreht. Das Wort soll hierbei ein char Array sein, bei dem die erste mit der letzten, die zweite mit der vorletzten, usw. Stelle getauscht werden soll. Versuche zusätlich es ohne zweites Array zu lösen.