Aufgabenstellung:
Mein Code:
Fehlermeldung :
Wenn ich das ganze von Hand mache schaffe ich das aber in unter 8 Versuchen mit 54.
hilfsMehtode: 1 + 100 = 101 / 2 = 50 , 50 ist kleiner 54 -> Wird im Bereich zw. 50 -100 gesucht. 75 > 54 also wird im Bereich 50 - 75 gesucht. 125/2 = 62 > 54, also wird im Bereich 50 - 62 gesucht. -> 56 >54 , also wird im Bereich 50 - 56 gesucht. -> 53 < 54, somit wird im Bereich 53 - 56 gesucht, 54 = 54, wird ausgegeben.
Hoffe das war verständlich.
Mein Code:
Java:
public class Spiel {
public static int suchen() {
return hilfsMehtode(1, 100);
}
public static int hilfsMehtode(int von, int bis) {
int half = (von + bis) / 2;
if (EinsAus100.raten(half) > 0) {
return hilfsMehtode(half, bis);
} else if (EinsAus100.raten(half) < 0) {
return hilfsMehtode(von, half);
}
return half;
}
}
Fehlermeldung :
Code:
PreTest...
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at TestRunner.main(TestRunner.java:64)
Caused by: java.lang.RuntimeException: Es wurde falsch gesucht und das Ergebnis 54 nicht in < 8 Versuchen gefunden!
at EinsAus100.raten(EinsAus100.java:23)
at Spiel.hilfsMehtode(Spiel.java:15)
at Spiel.hilfsMehtode(Spiel.java:18)
at Spiel.hilfsMehtode(Spiel.java:18)
at Spiel.hilfsMehtode(Spiel.java:18)
at Spiel.hilfsMehtode(Spiel.java:16)
at Spiel.suchen(Spiel.java:10)
at PreTest.testeSpiel(PreTest.java:24)
... 5 more
testeSpiel:
Spiel.suchen();
FEHLER: unerwartete Exception wurde geworfen: java.lang.RuntimeException: Es wurde falsch gesucht und das Ergebnis 54 nicht in < 8 Versuchen gefunden!
Wenn ich das ganze von Hand mache schaffe ich das aber in unter 8 Versuchen mit 54.
hilfsMehtode: 1 + 100 = 101 / 2 = 50 , 50 ist kleiner 54 -> Wird im Bereich zw. 50 -100 gesucht. 75 > 54 also wird im Bereich 50 - 75 gesucht. 125/2 = 62 > 54, also wird im Bereich 50 - 62 gesucht. -> 56 >54 , also wird im Bereich 50 - 56 gesucht. -> 53 < 54, somit wird im Bereich 53 - 56 gesucht, 54 = 54, wird ausgegeben.
Hoffe das war verständlich.