Professional Documents
Culture Documents
PR1 ST2 Musterloesung - DRVD
PR1 ST2 Musterloesung - DRVD
1.b.ii Scanner.(has)Next
> 6.7
> hi
> x-y
> a
> 10
> 20
6 Zeilen
1.b.iii Scanner.(has)NextInt
0 Zeilen
1.b.iv throws
Die throws-Klausel deklariert im Methodenkopf, dass eine Anweisung der Methode potentiell
den in der throws-Klausel angegebenen Exception-Typ erzeugen kann.
}
} catch (FileNotFoundException e) {
System.out.println(e);
} finally {
if (input != null) {
input.close();
}
}
}
}
1.b.vii System.out
PrintStream
1.c Arrays
1.c.i min-Methode
Musterlösung:
public static double min(double[] arr) {
double min= arr[0];
for (int i=1; i<arr.length; i++) {
min= Math.min(min, arr[i]);
}
return min;
}
Alternativ kann in der for-Schleife eine if-Anweisung stehen.
1.d Collections
1.d.i ArrayList von Zeichen
Zu a) Elemente einer ArrayList müssen von einem Objekt-Typ sein. char ist ein
primitiver Datentyp
Zu b) Ersetze <char> durch <Character>
return namen;
}
1.e Rekursion
1.e.i Rekursion
Musterlösung:
public static void doubleReverse2(String s) {
if (s.length() > 0) {
char c= s.charAt(s.length()-1);
System.out.print(c);
System.out.print(c);
doubleReverse2(s.substring(0, s.length()-1));
}
}
Alternative:
public static void doubleReverse3(String s) {
if (s.length() <= 1) {
System.out.print(s+s);
} else {
char c= s.charAt(s.length()-1);
System.out.print(c);
System.out.print(c);
doubleReverse2(s.substring(0, s.length()-1));
}
}
a) mystery6(4, 1) 4
b) mystery6(4, 2) 8, 4, 8
c) mystery6(8, 2) 16, 8, 16
d) mystery6(4, 3) 12, 8, 4, 8, 12
e) mystery6(3, 4) 12, 9, 6, 3, 6, 9, 12
2.g Ziffern
public static int countEvenDigits(int n) {
int count = 0;
while (n != 0) {
int digit = n % 10;
n = n / 10;
if (digit % 2 == 0) {
count++;
}
}
return count;
}
}
}
public static void printFigure(int n) {
printChars(n-1, ' ');
System.out.println("|");
for (int i=1; i<n; i++) {
printChars(n-i-1, ' ');
System.out.print("/");
printChars(i-1, ' ');
System.out.print("|");
printChars(i-1, ' ');
System.out.print("\\");
System.out.println();
}
printChars(n*2-1, '-');
System.out.println();
}
2.i Markierungsfahrzeug
public class Markierung {
public static void main(String[] args) {
double teillaenge[]= {6.5, 1.5, 4.3, 2.1, 8.7, 8.3};
String farben[]= {"rot", "gelb", "blau"};
double abstand= 3; // Markierungsabstand
int stadtteilindex= 0; // In diesem Stadtteil bin ich gerade
double laenge= 0; // Bisher abgefahrende Gesamtlänge
double grenzlaenge= teillaenge[0]; // Bei dieser Länge fängt der
// nächste Stadtteil an
int farbindex= 0; // nächste Farmarkierung
while (stadtteilindex < teillaenge.length) {
System.out.print((char)('A'+stadtteilindex));
System.out.println(" "+laenge+" "+farben[farbindex]);
laenge += abstand;
// Prüfe nun, ob das Ende des Stadtteils oder gar das Ende der Gesamtroute
// erreicht ist:
while (laenge > grenzlaenge && stadtteilindex < teillaenge.length) {
// While-Schleife, da es mehrere sehr kurze Stadtteile geben kann, die
// ich alle überspringen muss:
stadtteilindex++;
if (stadtteilindex < teillaenge.length) {
grenzlaenge += teillaenge[stadtteilindex];
}
}
farbindex= (farbindex+1)%farben.length;
}
}
}
2.j Rekursion
public static String m(int n) {
if (n>1) {
String s= m(n-1);
return n+s+s+n;
}
return "1";
}