1. Die richtige Lösung ist "9X16". Der Grund hier ist die Java precedence order. Java macht evaluiert die Ausdrücke in folgender Reihenfolge: 1. 12 / 4 == 3 ===> (3 * 3 + ("X" + 7 % 3) + 18 % 5 * 2) 2. 3 * 3 == 9 ===> (9 + ("X" + 7 % 3) + 18 % 5 * 2) 3. Nun wird die Klammer ("X" + 7 % 3) evaluiert 3.1 7 % 3 == 1 ===> ("X" + 1) 3.2 "X" + 1 == "X1" ===> (9 + "X1" + 18 % 5 * 2) 4. Nun wird 9 + "X1" evaluiert und da "X1" ein String ist wird 9 in "9" umgewandelt und an "X1" angehängt ===> ("9X1" + 18 % 5 * 2) 5. Da % und * eine höhere Ordnung haben als + wird jetzt zuerst 18 % 5 * 2 evaluiert. % und * haben die selbe Ordnung und da die Associativity left-to-right ist wird es wie folgt evaluiert: (18 % 5) * 2 ===> ("9X1" + 6) 6. Zuletzt wird 6 noch in "6" umgewandelt und and "9X1" angehängt ===> "9X16" 2. Die richtige Lösung ist [0, -1, -2, -3, -4]. Zu Beginn ist arr auf [0, 0, 0, 0, 0] initialisiert. In der for-Schleife loopen wir dann über die Indexe 4 bis 1 und setzten dann jeweils den entry an besagtem index auf -i == -index. Da die Indexe mit 0 anfangen, wird der erste entry der array (arr[0]) ignoriert. 3. Hier hilft es wenn man die Iterationen schrittweise aufschreibt so wie wir es in der Übungsstunde gemacht haben. 4. Hier kommt es zu einer Exception da wir i immer mit 2 multipilizieren und dann in der while-Condition auf den Eintrag an Stelle i zugreifen. Nach der dritten Iteration hat i den Wert 8, dieser index ist aber out-of-bound da das Array eine Länge von 5 hat. Wir versuchen also auf eine Stelle ausserhalb des Arrays zuzugreifen, weshalb es zu einer OutOfBoundException kommt. 5. rand.nextInt(i) gibt einen Integer im Interval [0, i-1] zurück. Somit kann rand.nextInt(2) entweder 0 oder 1 zurückgeben. Selbst wenn alle drei entries 1 wären, würden wir höchsten 3 erhalten und NIE 6. 6. Siehe Erklärung bei 5 7. Wir greifen hier auf einen zufälligen index zu. arr1 und arr2 haben nur die Zahl 2 gemeinsam. Da bei arr1 alle Werte 2 sind, spielt es keine Rolle was nextInt(3) zurückgibt, x1 wird immer 2 sein. Wir müssen jetzt also "hoffen" dass x2 auch 2 ist, da wir 3 möglichkeiten haben und nur eine davon 2 ist, ist die Wahrscheinlichkeit 1/3 == 33.3333333% 8. Einfacher Zugriff auf Array und dann Konkatenation 9. Wir vergleichen die Strings mit == statt .equals(). Daher erhalten wir immer false 10. Wir setzen hier s = null. Das heisst s ist kein Objekt mehr sondern einfach null. Da null kein Objekt ist, hat es auch keine Methoden wie z.B. equals(). Wenn man überprüfen möchte ob eine Referenz null ist, sollte man IMMER == null verwenden. 11. s1 ist nicht null und entspricht dem String "hello", somit wird wenn wir den String s1 in die Funktion customPrint eingeben das erste IF-Statement zu true evaluiert und "hi there" ausgegeben. Bei s2 wird jedoch der else-Block ausgeführt da s2 null ist. Im else-Block wird dann einfach s2 ausgeprinted, und da s2 immernoch null ist wird null geprinted.