# unterprogramm in main-methode einbinden



## josi (5. Jul 2008)

hallo ihr experten 

habe mal wieder ein problem, hoffe ihr könnt mir helfen. möchte ein zufallspolynom erstellen und dass dann mit bubblesort sortieren. zufallspolynom seperat funktioniert, nur beim sortieren kommt eine fehlermeldung...


```
import HUMath.Algebra.*;
import java.lang.*;
import java.io.*;

public class poly {

  static DX p, anf, polynom;
  static double sortiert[];           



public static DX zuf()                 

 {
          
   p = new DX();
   anf = p;
   p.co = Math.random()*100.0;
   p.ex = (int)(Math.random()*10);
   p.next = new DX();
   p = p.next;                    //next= nächster Summand
   p.co = Math.random()*100.0;
   p.ex = (int)(Math.random()*10);
   p.next = new DX();
   p = p.next;
   p.co = Math.random()*100.0;
   p.ex = (int)(Math.random()*10);
   return anf;
 }



	public static int[] bubbleSort(int[] sammlung)
{
  
  int temp;
  for (int i = 0; i < sammlung.length; i++)
  for (int j = 0; j < sammlung.length-1; j++)

      if (sammlung[j+1] < (sammlung[j]))      
      { // vergleichen
        temp = sammlung[j+1]; // austauschen
        sammlung[j+1] = sammlung[j];
        sammlung[j] = temp;
      }
}

public static void main(String[] arg)
 {
  
  DX p = zuf();              //DX=Konstrukteur
  DX.write(p);

  polynom=zuf();
  DX.write(polynom);

  sortiert = bubbleSort(polynom);      //oder

  DX.write(bubbleSort(polynom));
 }
}
```


die fehlermeldung sieht folgendermaßen aus:


```
poly.java: 58,60: bubbleSort(int[n]) in poly cannot be applied to (HUMath.Algebra.DX)
```


bin ratlos, das muss doch irgendwie gehen... lg


----------



## André Uhres (5. Jul 2008)

Bei der Methode bubbleSort fehlt erstmal der return. Das soll wohl "return sammlung;" sein. 
"sammlung" ist aber ein int[], während "static void write(DX p) " offensichtlich ein Objekt vom Typ "DX" als Übergabeparameter erwartet...


----------



## josi (5. Jul 2008)

hast du eine idee, wie es klappen kann?


----------



## Kaini (6. Jul 2008)

```
public static int[] bubbleSort(int[] sammlung)
                               ^^^^^^^^^^^^^^
```
Das Problem ist, dass _bubbleSort_ einen _int[]_ erwartet und du aber ein _DX_ übergibst.
Es muss sowas geben wie _p.toIntArray();_ oder du kannst auf diese weise _HUMath.Algebra.DX_ nicht verwenden.

So wie es aussieht ist das eine verkettete Liste, die du sotieren musst. Dann musst du dir das _int-Array_ selber erzeugen. (Am einfachsten warscheinlich mit ArrayList, aber ich weiß nicht inwiefern du das verwenden kannst)

Achja: Wenn _ex_ Exponent heißt würde ich zu _long_ greifen, da wird _int_ schnell zu klein.


----------



## André Uhres (6. Jul 2008)

siehe Folgepost


----------



## André Uhres (6. Jul 2008)

josi hat gesagt.:
			
		

> hast du eine idee, wie es klappen kann?


Ich bin nicht sicher, was du eigentlich machen willst.
So ist der Code zumindest kompilierbar:

```
package basics;
/*
 * Poly.java
 */

public class Poly {

    static DX p,  anf,  polynom;
    static double sortiert[];

    private static DX zuf() {

        p = new DX();
        anf = p;
        p.co = Math.random() * 100.0;
        p.ex = (int) (Math.random() * 10);
        p.next = new DX();
        p = p.next;                    //next= nächster Summand
        p.co = Math.random() * 100.0;
        p.ex = (int) (Math.random() * 10);
        p.next = new DX();
        p = p.next;
        p.co = Math.random() * 100.0;
        p.ex = (int) (Math.random() * 10);
        return anf;
    }

    public static int[] bubbleSort(int[] sammlung) {

        int temp;
        for (int i = 0; i < sammlung.length; i++) {
            for (int j = 0; j < sammlung.length - 1; j++) {
                if (sammlung[j + 1] < (sammlung[j])) { // vergleichen
                    temp = sammlung[j + 1]; // austauschen
                    sammlung[j + 1] = sammlung[j];
                    sammlung[j] = temp;
                }
            }
        }
        return sammlung;
    }

    private static double[] bubbleSort(DX polynom) {
        return null;
    }

    public static void main(String[] arg) {

        DX p1 = zuf();              //DX=Konstrukteur
        DX.write(p1);

        polynom = zuf();
        DX.write(polynom);

        sortiert = bubbleSort(polynom);      //oder

        DX.write(bubbleSort(polynom));
    }
}

class DX {

    double co;
    int ex;
    DX next;

    static void write(double[] bubbleSort) {
    }

    static void write(DX p) {
    }

    @Override
    public String toString() {
        return "co: " + co + "  ex: " + ex + "  next: " + next;
    }
}
```

Nur müsste man dann noch die Methode implementieren, die ich eingefügt habe:

```
private static double[] bubbleSort(DX polynom) {
...
    }
```


----------



## josi (6. Jul 2008)

was macht denn dieses package basics? seit dem ich das probiert habe wird das HUMath.Algebra und auch die dort enthaltene klasse dx nicht mehr erkannt. auch nicht in programmen, wo es vorher ging... hilfe...

Beispiel:

```
test3.java:5: cannot access DX
bad class file: .\DX.class
class file contains wrong class: basics.DX
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
        static DX objekte[], sortiert[];
```


----------



## André Uhres (6. Jul 2008)

package basics; ist Teil meines Testprojektes, kannst du also weglassen oder durch ein anderes package ersetzen.


----------



## josi (6. Jul 2008)

kannst du die fehlermeldung erklären - obwohl es sonst ging?


----------



## josi (6. Jul 2008)

habe den fehler gefunden. habe eine datei dx.java genannt und die DX.class datei davon und die aus dem package haben sich nicht verstanden. werde es jetzt weiter versuchen, bis später!


----------

