Hallo,
Ich will im Rahmen einer Übung eine Binäre Suche in einem Array realisieren. Ich dachte ich hätte dies ziemlich Clever gelöst aber nun bekomme ich nur Fehlermeldungen array Index out of Bounds wo ich sie mir einfach nicht Vorstellen kann ...
Nimmt man den ersten Wert von Musikladen.java kommt beispielsweise Array Index put of Bounds in Z33 , 37 und 18 in BinaereSuche.java
Ich habe die Klassen BinaereSuche und Artikel geschrieben. Die Musikladendatei war vorgegeben. Die drei anderen Klassen die hierran beteiligt sind sind ebenfalls vorgegeben aber Unwichtig denke ich.
Binaere Suche
Artikel
Also kurz Musikladen erzeugt einen Array voll mit Artikel-Objekten der an ein BinaereSuche-Objekt übergeben wird.
Vielen Dank für eure Hilfe und Hinweise =)
Ich will im Rahmen einer Übung eine Binäre Suche in einem Array realisieren. Ich dachte ich hätte dies ziemlich Clever gelöst aber nun bekomme ich nur Fehlermeldungen array Index out of Bounds wo ich sie mir einfach nicht Vorstellen kann ...
Nimmt man den ersten Wert von Musikladen.java kommt beispielsweise Array Index put of Bounds in Z33 , 37 und 18 in BinaereSuche.java
Ich habe die Klassen BinaereSuche und Artikel geschrieben. Die Musikladendatei war vorgegeben. Die drei anderen Klassen die hierran beteiligt sind sind ebenfalls vorgegeben aber Unwichtig denke ich.
Binaere Suche
Code:
public class BinaereSuche{ private Artikel[] array; private int index; public BinaereSuche(Artikel[] p){ this.array = p; } public int suche(Artikel suchObjekt){ int a = 0; int m = array.length/2; int e = array.length; BS(suchObjekt,a,m,e); return index; } // Hier wird mittels Binaerer Suche nach dem Gewünschten Objekt gesucht public void BS(Artikel SO,int a, int m, int e){ SO = SO; int anfang = a; int mitte = m; int ende = e; if (mitte>=array.length||array.length==0||mitte<0){ index = -1; } if (array[mitte].compareTo(SO)==0){ index = mitte; } if (array[mitte].compareTo(SO)>0){ BS(SO,mitte+1,(anfang+ende)/2,array.length); } if (array[mitte].compareTo(SO)<0){ BS(SO,anfang,(anfang+mitte)/2,mitte-1); } } }
Artikel
Code:
public class Artikel { // Attribute private String artikelnummer; private String hersteller; private String name; private String kategorie; private double preis; // Konstruktoren public Artikel(String artikelnummer) { this.artikelnummer = artikelnummer; } public Artikel(String artikelnummer, String hersteller, String name, String kategorie, double preis) { this.artikelnummer = artikelnummer; this.hersteller = hersteller; this.name = name; this.kategorie = kategorie; this.preis = preis; } public String toString(){ return "Name \t= "+this.name+ "Artikelnummer = \t"+this.artikelnummer+ "Hersteller = \t"+this.hersteller+ "Kategorie = \t"+this.kategorie+ "Preis = \t"+this.preis; } public int compareTo(Artikel o){ int x = this.artikelnummer.compareTo(o.artikelnummer); return x; } // Getter public String getArtikelnummer() { return artikelnummer; } public String getHersteller() { return hersteller; } public String getName() { return name; } }
Vielen Dank für eure Hilfe und Hinweise =)
Comment