Guten Abend,
ich habe ein Programm geschrieben, welches:
1. die Slot-Anzahl für ein Array bekommt
2. ein eigenes Objekt vom Typ IntArray erzeugt und die Anzahl an den Konstruktor des IntArray-Objekts weitergibt
3. der Konstruktor startet eine Methode zur Eingabe der Array-Werte, anschließend werden diese ausgegeben
4. der Konstruktor startet eine Methode, die die Werte aufsteigend ordnet, anschließend wieder Ausgabe
5. die main-Methode fragt nach der zu suchenden Zahl
6. in der main wird die lineare Suche gestartet und der gefundene Slot zurückgegeben
Falls ja, wird eine rekursive binäre Suche anschließend eine iterative binäre Suche gestartet
Falls nein, wird "Element nicht gefunden" ausgegeben.
7. die main fragt nach einer weiteren Suche
Falls ja, gehts bei 5. weiter
Falls nein, wird das Programm beendet
Nun zu meinem Problem:
Das Programm bleibt nach mehrmaligem Suchdurchlauf bei Punkt 6 nach der rekursiven binären Suche stehen.
Die Klasse IntArray, die mit der main getestet wird.
Die main-Methode
Kann mir eventuell einer sagen, ob ich was übersehen und/oder was falsch hab?
Vielen Dank
Neo</array.length;></array.length;></min)
</array.length;></array.length;></array.length;>
ich habe ein Programm geschrieben, welches:
1. die Slot-Anzahl für ein Array bekommt
2. ein eigenes Objekt vom Typ IntArray erzeugt und die Anzahl an den Konstruktor des IntArray-Objekts weitergibt
3. der Konstruktor startet eine Methode zur Eingabe der Array-Werte, anschließend werden diese ausgegeben
4. der Konstruktor startet eine Methode, die die Werte aufsteigend ordnet, anschließend wieder Ausgabe
5. die main-Methode fragt nach der zu suchenden Zahl
6. in der main wird die lineare Suche gestartet und der gefundene Slot zurückgegeben
Falls ja, wird eine rekursive binäre Suche anschließend eine iterative binäre Suche gestartet
Falls nein, wird "Element nicht gefunden" ausgegeben.
7. die main fragt nach einer weiteren Suche
Falls ja, gehts bei 5. weiter
Falls nein, wird das Programm beendet
Nun zu meinem Problem:
Das Programm bleibt nach mehrmaligem Suchdurchlauf bei Punkt 6 nach der rekursiven binären Suche stehen.
Die Klasse IntArray, die mit der main getestet wird.
Java:
import java.util.Scanner; // Scanner-Klasse wird fuer die Eingabe benoetigt
class IntArray
{
// Instanzvariable
int[] array;
// Konstruktor
IntArray(int index)
{
array = new int[index];
werteRein();
printArray();
ordnenArray();
printArray();
}
// Methoden
/* Die Methode werteRein() wird vom Konstruktor verwendet, um
das Array zu befuellen */
void werteRein()
{
Scanner scan = new Scanner(System.in);
for(int slot=0; slot<array.length; slot++)
{
System.out.print("Den " +(slot+1)+ ". Wert eingeben: ");
array[slot]=scan.nextInt();
}
}
/* Die Methode ordnenArray() wird vom Konstruktor verwendet, um
das gefuellte Array aufsteigend zu sortieren */
void ordnenArray()
{
int temp, min;
int slot3=0;
System.out.println("\nDie Zahlen werden geordnet!");
for(int slot1=0; slot1<array.length; slot1++)
{
temp=array[slot1];
min=array[slot1];
for(int slot2=slot1; slot2<array.length; slot2++)
{
if(array[slot2]<min)
{
min=array[slot2];
slot3=slot2;
}
}
array[slot1]=min;
if(min!=temp)
array[slot3]=temp;
}
}
/* Die Methode linSuche() sucht innerhalb des Arrays nacheinander
alle Elemente nach dem zu suchenden Element ab */
int linSuche(int ziel)
{
for(int slot=0; slot<array.length; slot++)
{
Integer arraySlot = new Integer(array[slot]);
if(arraySlot!= null )
if(ziel==array[slot])
return slot;
}
return -1;
}
/* Die Methode binSuche() sucht innerhalb des Arrays
mithilfe einer rekursiven binaeren Suche nach dem zu suchenden
Element */
int binSuche(int start, int ende, int ziel)
{
int mittel = (start + ende)/2;
if(array[mittel]==ziel)
return mittel;
if(start==ende)
return -1;
if(array[mittel]>ziel)
return binSuche(start, mittel-1, ziel);
return binSuche(mittel+1, ende, ziel);
}
/* Die Methode binSuche() sucht innerhalb des Arrays
mithilfe einer iterativen binaeren Suche nach dem zu suchenden
Element */
int binSucheIter(int start, int ende, int ziel)
{
int mittel=(start+ende)/2;
while(array[mittel]!=ziel)
{
mittel=(start+ende)/2;
if(start==ende)
return -1;
if(array[mittel]>ziel)
mittel-=1;
start=mittel;
}
return mittel;
}
/* Die Methode printArray() gibt alle Array-Elemente
vor und nach dem Ordnen auf dem Bildschirm aus */
void printArray()
{
System.out.println();
for(int slot=0; slot<array.length; slot++)
{
System.out.print(array[slot]);
if(slot<(array.length-1))
System.out.print(", ");
}
System.out.println();
}
}
Die main-Methode
Java:
public class TestLinSuche
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int anzahl, gesucht, gefunden;
int suche=1;
System.out.print("\nWie viele Slots soll das Array bekommen: ");
anzahl=scan.nextInt();
IntArray arr1 = new IntArray(anzahl);
while(suche == 1)
{
System.out.println("\nNach welcher Zahl möchten Sie suchen: ");
gesucht=scan.nextInt();
gefunden=arr1.linSuche(gesucht);
if(gefunden >= 0)
{
System.out.println("\nDie Zahl ist auf Slot " +gefunden);
System.out.println("\nRekursive binaere Suche: " +arr1.binSuche(0, anzahl-1, gesucht));
System.out.println("Iterative binaere Suche: " +arr1.binSucheIter(0, anzahl-1, gesucht));
}
else
System.out.println("\nElement nicht gefunden!");
System.out.println("\nMöchten Sie eine weitere Zahl suchen?\nJa: 1\nNein: 0");
suche=scan.nextInt();
while(suche!=1)
{
if(suche!=0)
{
System.out.println("Nur zwischen 1 und 0 waehlen.");
suche=scan.nextInt();
}
else
System.exit(0);
}
}
}
}
Kann mir eventuell einer sagen, ob ich was übersehen und/oder was falsch hab?
Vielen Dank
Neo</array.length;></array.length;></min)
</array.length;></array.length;></array.length;>
Zuletzt bearbeitet: