Binäres Suchen

Derenei

Aktives Mitglied
Habe ein Problem mit meinem Programm. Ich war gestern krank als wir dieses Programm in der Schule gemacht haben. Jetzt habe ich das Binäre Suchen versucht zu Programmieren. Mein Programm funktioniert aber nur teilweise. Wenn ich eine Zahl suche die sich mehr in der Mitte des Arrays befindet funktioniert es auch wenn ich aber eine Zahl am Anfang oder am Ende des Arrays nehme kommt immer ein
OutofBoundsException. Könnte sich jemand mein Programm ansehen ich komme einfach nicht weiter.
Danke für eure Hilfe.
Hier der Quellcode:

Java:
public class Binäres_Suchen
{
    public static void main (String[]args)
    {
        Out.println ("Binärer Zahlen Sucher.");
        int []a = new int [12];
        int max = 30;
        for (int i = 0; i < a.length; i++)
        {
            max = (int) (Math.random ()*30+1);
            a[i] = max;
        }
        Out.println ();
        int s1 = 0;
        int s2 = 0;
        while(s1 < a.length)//In dieser Schleife werden die Zahlen im Array auf Gleichheit überprüft.
        {
            for (s2 = 0; s2 < a.length; s2++)
            {
                if (s1 != s2)
                {
                    if(a[s2] == a[s1])
                    {
                        max = (int) (Math.random ()*30+1);
                        a[s2] = max;
                    }
                }
                else
                {
                    //tu nichts
                }
            }
            s2 = 0;
            s1++;
        }
        s1 = 0;
        s2 = 1;
        int s3;
        int t1 = 0;
        int t2 = 0;
        while(s1 < a.length)//Hier werden sie nach der Größe geordnet.
        {
            for (s3 = s2; s3 < a.length; s3++)
            {
                if (a[s3] < a[s1])
                {
                    t1 = a[s1];
                    t2 = a[s3];
                    a[s1] = t2;
                    a[s3] = t1;
                }
            }
            s3 = 0;
            s2++;
            s1++;
        }
        for (int i = 0; i < a.length; i++)
        {
            Out.print (a[i]+" ");
        }
        find (a);
    }
    
    public static void find (int []a)
    {
        int zSearch = 0;
        do
        {
            Out.print ("Nach welcher Zahl möchten Sie in der Zahlenreihe suchen?: ");
            zSearch = In.readInt ();
            if (zSearch < 1 || zSearch > 30)
            {
                zSearch = 0;
                Out.println ("!!!Geben Sie nur Zahlen zwische 1 und 30 ein!!!");
            }
        }while(zSearch < 1 || zSearch > 30);
        
        int high = a.length-1;
        int m = 0;
        int low = 0;
        int u = 0;
        while (low <= high)
        {
            m = (low+high) /2;
            if (a[m] == zSearch)
            {
                Out.print ("Ihre Zahl wurde gefunden.");
                u = 1;
                break;
            }
            if (zSearch < a[m])
            {
              high = high+(m-1);
            }
            if (zSearch > a[m])
            {
              low = low+(m+1);
            }
        }
        if (u == 0)
        {
            Out.print ("Ihre Zahl wurde nicht gefunden.");
        }
    }
}
 

ireas

Mitglied
Ich habe es jetzt noch nicht getestet, du musst aber jedenfalls in der inneren for-Schleife [c]a.length[/c] durch [c]a[s1].length[/c] ersetzen, sonst greifst du ja nur auf die länge des äußeren Array zu.

Weiterhin steht bei jeder Exception dabei, von wo sie geworfen wird (Dateiname + Zeilennummer); das hilft bei der Fehlersuche.
 

ireas

Mitglied
Sorry, ich merke gerade, dass meine erste Antwort Blödsinn war. Ich war gedanklich bei einem anderen Problem. Ich schau’s mir nochmal richtig an!
 

ireas

Mitglied
Okay:

Die Exception wird in Zeile 85 geworfen. [c]m[/c] wird zu groß; größer als die Arraygröße.

Hilft dir diese Information weiter?
 

Landei

Top Contributor
Ein kleiner Tipp: Deine Methoden machen zu viel auf einmal. Jede Methode sollte eine eindeutige, möglichst gut testbare Aufgabe haben. Den Nutzer etwas fragen ist eine Aufgabe, eine binäre Suche ist eine Aufgabe u.s.w. Damit wird es viel einfacher, Fehler zu finden.
 

Derenei

Aktives Mitglied
Danke für eure Hilfe. Habe mich im Internet noch einmal genau informiert. Ich habe in meiner Schleife ein paar Fehler gemacht. Um die Mitte m zu berechnen habe ich geschriben (low+high)/2 habe es dann auf low+(high-low)/2 ändern müssen und bei den Bedingungen in der Schleife habe ich ändern müssen:

if (zSearch < a[m])
{
high = high+(m-1);
}

und habe es dann auf geändert.:

if (zSearch < a[m])
{
high = m-1;
}

if (zSearch > a[m])
{
low = m+1;
}
Danke noch einmal. Werde mich in Zukunft erst im Internet informieren bevor ich etwas in das Java Forum poste.;)
 

jockel86

Neues Mitglied
hallo zusammen,ich verzweifle an diesem code bei groovy/Java:warum funktioniert er nicht?er soll x=3 aus der liste finden

Integer[] b=[1,3,5,7,11]
int n=b.size()
int l=0
int r=n-1

int x=3
while(r>=l){
m=Math.floor((l+r)/2)
if(b[m]==x){
return m
}
if(x<b[m]){
r=m-1
}
else{
l=m+1
}
return -1
}
 

stg

Top Contributor
hallo zusammen,ich verzweifle an diesem code bei groovy/Java:warum funktioniert er nicht?er soll x=3 aus der liste finden

Fangen wir doch mal damit an, dass das, was du hier postest, überhaupt kein gültiger Java-Code ist.


Und: Für eigene neue Fragen erstelle bitte ein neues Thema. Außerdem solltest du deinen Code in Java-Tags setzen, damit man ihn besser lesen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Binäres Suchen mit Rekursion Java Basics - Anfänger-Themen 5
T Binäres Problem! Java Basics - Anfänger-Themen 3
P Binäres Einfügen Java Basics - Anfänger-Themen 20
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I String nach Wort suchen Java Basics - Anfänger-Themen 6
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Java Mail: suchen von mehreren Emailadressen Java Basics - Anfänger-Themen 5
D Erste Schritte Wert im Array suchen Java Basics - Anfänger-Themen 12
B Suchen und sortieren Java Basics - Anfänger-Themen 10
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
C In ArrayList suchen Java Basics - Anfänger-Themen 6
G nach 9 - stelliger Nummer suchen Java Basics - Anfänger-Themen 7
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
Y Explizites Suchen Java Basics - Anfänger-Themen 13
G Zeichen suchen und Ausgeben. Java Basics - Anfänger-Themen 3
K String in String-Array suchen Java Basics - Anfänger-Themen 11
T Suchen in sortiertem Feld Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
L Name im Array suchen Java Basics - Anfänger-Themen 12
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
P Teilstring suchen Java Basics - Anfänger-Themen 3
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
A Nach dem Objekt suchen Java Basics - Anfänger-Themen 1
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
W .txt auslesen und nach schlüsselbegriffen suchen Java Basics - Anfänger-Themen 7
S Suchen in Arrays Java Basics - Anfänger-Themen 7
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
T String in Array suchen Java Basics - Anfänger-Themen 9
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Suchen und ersetzten mit \ ? Java Basics - Anfänger-Themen 9
A String in String suchen Java Basics - Anfänger-Themen 3
J Nach einem Wert suchen +/- x Java Basics - Anfänger-Themen 8
N Weg suchen bei Adjazenzmatrix Java Basics - Anfänger-Themen 2
E Suchen mit Hashfunktion ?! Java Basics - Anfänger-Themen 7
I Erste Schritte Ein Zeichen in einem Array Suchen Java Basics - Anfänger-Themen 8
N Binär suchen: Java Basics - Anfänger-Themen 4
D In Hashtable suchen Java Basics - Anfänger-Themen 3
J In String suchen Java Basics - Anfänger-Themen 14
D Nach String "{" suchen Java Basics - Anfänger-Themen 4
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
M Notiz suchen-Programm Java Basics - Anfänger-Themen 3
F Zusammenhängend Komponente suchen(Graph) Java Basics - Anfänger-Themen 4
M Teilmatrix suchen Java Basics - Anfänger-Themen 16
B Java nach bestimmter dateiendung suchen Java Basics - Anfänger-Themen 6
B Element in Folge suchen Java Basics - Anfänger-Themen 7
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
R Datentypen In String nach String suchen und hinzufügen Java Basics - Anfänger-Themen 2
D Textdatei einlesen und darin suchen Java Basics - Anfänger-Themen 11
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
P char[] - suchen/ löschen Java Basics - Anfänger-Themen 6
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
C Objekt aus Liste suchen Java Basics - Anfänger-Themen 6
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
D In String suchen und extrahieren Java Basics - Anfänger-Themen 13
B Suchen nach Teilstring, um Text danach ausgeben Java Basics - Anfänger-Themen 11
H Höchsten int-Wert(key) aus einer Hashmap suchen Java Basics - Anfänger-Themen 19
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
Developer_X Strings in JTextarea suchen Java Basics - Anfänger-Themen 15
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
J Suchen nach ArrayObjekten Java Basics - Anfänger-Themen 17
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
G String suchen Java Basics - Anfänger-Themen 4
X Attribut in n Objekten suchen Java Basics - Anfänger-Themen 8
G String in Array suchen Java Basics - Anfänger-Themen 6
G Texte innerhalb von Dateien suchen Java Basics - Anfänger-Themen 9
P Text in Verzeichnisse suchen Java Basics - Anfänger-Themen 4
-horn- String im String suchen, womit? Java Basics - Anfänger-Themen 2
G String Suchen ersetzen replace_all() Java Basics - Anfänger-Themen 6
G Nach Datum suchen. Java Basics - Anfänger-Themen 4
M Rekursives suchen im TreeMenu Java Basics - Anfänger-Themen 10
G In DefaultTreeModel suchen Java Basics - Anfänger-Themen 2
G BST Suchbäume kleinsten Wert suchen Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
G Suchen in Map nach Schlüssel? Java Basics - Anfänger-Themen 2
G Methode in API suchen Java Basics - Anfänger-Themen 3
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben