Hallo zusammen,
ich bin neu hier, fange gerade erst mit dem Programmieren an, und bin wohl schon ein wenig älter als die meisten Anfänger.
Ich habe hier im Forum zwar schon einiges gelesen, die Suche genutzt und auch gegooglet, aber leider nicht das richtige gefunden.
Ich hoffe hier kann mich mal jemand aufklären, ich verstehe nicht was an meinem code falsch ist.
Das Programm soll folgendes können...
- bestimmung einer String Array-Länge durch user Eingabe, wobei diese mindestens 6 betragen muss
- Erzeugung eines Arrays, einlesen der Strings durch user Eingabe.
- Dann soll der user noch einen der Strings eingeben können, und das Programm soll dann die Position des Strings anzeigen.
folgendes habe ich geschrieben:
Das Programm liest auch alles ein, und falls ich einen String suche, der nicht im Array ist, bekomme ich auch eine Meldung, dass der Strings nicht existiert, wenn ich allerdings einen String suche, der auch im Array ist, passiert gar nichts.
Ich hoffe hier kann mir jemand erklären was ich falsch mache.
Edit: Achso es soll mit der "Binären suche" funktionieren.
ich bin neu hier, fange gerade erst mit dem Programmieren an, und bin wohl schon ein wenig älter als die meisten Anfänger.
Ich habe hier im Forum zwar schon einiges gelesen, die Suche genutzt und auch gegooglet, aber leider nicht das richtige gefunden.
Ich hoffe hier kann mich mal jemand aufklären, ich verstehe nicht was an meinem code falsch ist.
Das Programm soll folgendes können...
- bestimmung einer String Array-Länge durch user Eingabe, wobei diese mindestens 6 betragen muss
- Erzeugung eines Arrays, einlesen der Strings durch user Eingabe.
- Dann soll der user noch einen der Strings eingeben können, und das Programm soll dann die Position des Strings anzeigen.
folgendes habe ich geschrieben:
Java:
import java.util.Arrays;
import java.io.*;
public class Aufgabe_4 {
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int laenge; // Array-Laenge
String [] userArray;
String wortSuche;
do
{
System.out.print("Wie lang soll das Array sein: "); // Abfrage wie lang das Array sein soll.
laenge = Integer.parseInt(in.readLine()); // Einlesen der Laenge
if(laenge <6) // Falls kleiner als 6, Hinweis auf Mindestlaenge
{
System.out.println();
System.out.println("Bitte mindestens eine laenge von 6 wählen! ");
System.out.println();
}
} while (laenge < 6); //Abfrage solange Mindestlaenge nicht eingeben wird.
userArray = new String [laenge];
System.out.println();
System.out.println("Bitte geben Sie nacheinander "+laenge+" Strings ein und bestätigen sie jweils mit Enter. ");
System.out.println();
for (int i=0; i <= userArray.length-1; i++) // Einlesen der gewählten Anzahl an Strings.
{
userArray[i] = in.readLine();
}
for (int i=0; i <= userArray.length-1; i++) // Konvertierung der Strings in Kleinbuchstaben
{
userArray[i] = userArray[i].toLowerCase();
}
Arrays.sort(userArray); // Alphabetische Sortierung der Worte
System.out.println();
System.out.print("Bitte Wort zur Suche eingeben: ");
wortSuche = in.readLine();
wortSuche = wortSuche.toLowerCase();
System.out.println();
int grenzeLinks = 0, grenzeRechts = userArray.length-1;
int mitte = (grenzeLinks + grenzeRechts)/2;
boolean gefunden = false;
while (gefunden == false)
{
if (wortSuche.equals(userArray[mitte]))
{
gefunden = true;
System.out.println("Position: "+ Arrays.asList(userArray).indexOf(wortSuche));
}
else
if (wortSuche.compareTo(userArray[grenzeLinks]) < 0 ||wortSuche.compareTo(userArray[grenzeRechts]) > 0)
{
System.out.println("Das gesuchte Wort existiert nicht.");
}
if (wortSuche.compareTo(userArray[mitte]) > 0)
{
grenzeLinks = mitte+1;
}
else
if (wortSuche.compareTo(userArray[mitte]) < 0)
{
grenzeRechts = mitte-1;
}
}
}
}
Das Programm liest auch alles ein, und falls ich einen String suche, der nicht im Array ist, bekomme ich auch eine Meldung, dass der Strings nicht existiert, wenn ich allerdings einen String suche, der auch im Array ist, passiert gar nichts.
Ich hoffe hier kann mir jemand erklären was ich falsch mache.
Edit: Achso es soll mit der "Binären suche" funktionieren.
Zuletzt bearbeitet: