# Problem mit Sortieren Fehler: incompatible Types!



## thron (1. Dez 2006)

Hallo soll eine Programm vervollständigen das aus mehreren Teilen besteht und hänge jetzt schon..habe eine Methode einlesen() geschrieben und eine Methode sortiere() jetzt kommt der mir mit dem Fehler incompatible Types:


```
import Prog1Tools.IOTools;
/**
 * @author: Roland Küstermann
 * @version: 1.0
 * @since: 22.11.2006
 */

/**
 * Diese Aufgabe behandelt rekursives binäres Suchen und sortieren mit dem
 * Bubblesort Algorithmus.
 *
 * @concepts: Methode, Klassenmethode, Überladen, Felder, innere Klassen,
 * Seiteneffekt
 */
public class SortiereUndSuche {
	
	public static String einlesen ()	{
		int AnzahlID = IOTools.readInteger("Anzahl der IDs: ");
		Datensatz [] daten = new Datensatz [AnzahlID];
		
		int i = 0; 
		do {
			daten [i] = new Datensatz();
			daten [i].id = IOTools.readInteger("Bitte geben Sie die ID ein: ");
			daten [i].bezeichnung = IOTools.readLine("Bitte geben Sie die Bezeichnung ein: ");
			i = i + 1;
		} while (i < AnzahlID);
		
	}
	
	public static int sortiere (Datensatz [] daten){
	int n = daten.length;
    int temp; 

    for (int i=0; i < n-1; i=i+1)          
      for (int j=n-1; j > i; j=j-1)        
        if (daten[j-1].id > daten[j].id)                 
         {
            temp = daten[j-1].id;                
            daten[j-1].id = daten[j].id;                
            daten[j].id = temp;                   
         }
	}
	

  /**
   * Zunächst werden die Daten eingelesen.
   * Das so gewonnene Feld wird dann sortiert.
   * Lassen Sie einen Suchschluessel eingeben und suchen Sie in den Daten den 
   * zugehörigen Datensatz. Falls der Datensatz existiert, wird die Bezeichnung
   * ausgegeben.
   *
   * @param args nicht verwendet
   */
  public static void main(String[] args) {
    final Datensatz[] daten = einlesen(); //** HIER sagt er incompatible Types!!!! **/
    sortiere(daten);
    do {
      final int suchSchluessel = IOTools.readInt("Zu suchende ID [-1 = Abbruch]: ");
      if (suchSchluessel == -1)
        break;

      final Datensatz datum = suche(daten, suchSchluessel);
      if (datum == null)
        System.out.println("Zum Schluessel " + suchSchluessel +
          " wurde kein Datensatz gefunden.");
      else
        System.out.println("Die Bezeichnung des Datensatz mit Schluessel " +
          suchSchluessel + " lautet: " + datum.bezeichnung);
    } 
    while (true);
  }
}
```


----------



## Murray (1. Dez 2006)

Die Methode einlesen ist mit einem String als Returnwert deklariert, gibt aber überhaupt nichts zurück.

Mach das mal so:

```
public static Datensatz[] einlesen() {
 /*.. */

 return daten;
}
```


----------



## thron (1. Dez 2006)

okay...super das hat hingehauen....jetzt hab ich noch eine Frage...ich soll die Methode suchen prgrammieren! Aber wie bringe ich Java dazu das es mir einen Datensatz aus meinen Feldern sucht???
*grübel*

Gruß....


----------



## Murray (1. Dez 2006)

Offenbar sollst du einen Datensatz mit einem bestimmten Schlüssel suchen. Also musst du das Array iterieren (das geht mit einer for-Schleife) und bei jedem Satz prüfen, ob dessen Schlüssel dem gesuchten entspricht.


----------

