G
Guest
Gast
Hallo!
Ich habe binarySearch mit einer Rekursiven funktion nachprogrammiert. Aber ich kann jetzt in meiner Testklasse eine Methode nicht aufrufen...hier mal der Code:
Testklasse:
Hier zeigt er mir an "Cannot find Symbol":
und hier ist die Klasse zu der Testklasse:
[/code]
Ich habe binarySearch mit einer Rekursiven funktion nachprogrammiert. Aber ich kann jetzt in meiner Testklasse eine Methode nicht aufrufen...hier mal der Code:
Testklasse:
Code:
/*
* Das ist die Testklasse zu Searcher.java
*
* @author Manuel
* @version 11.11.2005
*/
public class Testklasse {
public static void main(String args[]){
int test[] = new int[20];
for(int i = 0, z = 1; i < 20; i++, z++){
test[i] = z;
}
Searcher zahlenSuche = new Searcher(test, true);
System.out.println(zahlenSuche.binarySearch(0));
}
}
Code:
System.out.println(zahlenSuche.binarySearch(0));
und hier ist die Klasse zu der Testklasse:
Code:
import java.util.*;
/*
* Es gibt ein Array, in dem nach einer bestimmten Zahl gesucht werden soll. Die
* Suche erfolgt durch ständiges Halbieren. Man prüft in welcher Hälfte des Arrays
* sich die Zahl befindet danach halbiert man diese Hälfte nocheinmal und prüft
* wieder in welcher Hälfte sich die Zahl befindet usw... bis man die Zahl findet.
* Wenn die Zahl nicht gefunden wird soll -1 ausgegeben werden.
* @author Manuel
* @version 11.11.2005
*/
public class Searcher
{
private int [] array;
/**
* Das Array wird initialisiert und bei Bedarf wird das Array auch sortiert
* @param int [] a Zum initialisieren des Arrays
* @param sort Falls sort true ist wird das Array sortiert
*/
public Searcher(int [] a, boolean sort)
{
array = a;
if (sort){
Arrays.sort(a);
}
}
/**
* Diese Methode sucht nach einer int Zahl in einem Array. Es wird zuerst verglichen
* ob diese Zahl exakt die Mitte ist, wenn nicht dann wird überprüft in welcher
* Hälfte weitergesucht werden soll.
*
* @param untereSchranke Der untere Bereich des Arrays, die untere Schranke
* @param obereSchranke Der obere Bereich des Arrays, die obere Schranke
* @param gesuchteZahl Die Zahl die zu suchen ist
* @return Entweder der Index der gesuchten Zahl und falls diese nicht vorkommt -1
*/
public int binary(int untereSchranke, int obereSchranke, int gesuchteZahl)
{
double mitte = array[(obereSchranke + untereSchranke)/2];
if(mitte == gesuchteZahl){
return (obereSchranke + untereSchranke)/2;
}
if(mitte < gesuchteZahl && array[array.length-1] >= gesuchteZahl){
return binary((obereSchranke + untereSchranke)/2+1, array[array.length-1], gesuchteZahl);
}
if(mitte > gesuchteZahl && array[0] <= gesuchteZahl){
return binary(array[0], (obereSchranke + untereSchranke)/2-1, gesuchteZahl);
}
else{
return -1;
}
}
/**
* Diese Methode ruft die Methode binary auf und gibt die Gesuchte Zahl aus oder
* falls diese nicht im Array enthalten ist -1
* @param gesuchteZahl Die gesuchte Zahl des Arrays
* @return Index nachdem gesucht wurde.
*/
public int binarySearch(int gesuchteZahl){
return binary(0, array.length-1, gesuchteZahl);
}
}