# Array-Wert zurückgeben -return-



## ToraInfo (15. Dez 2008)

Hallo ihrs! 
Ich will schauen ob mein Quicksort funktioniert, allerdings funktioniert nur meine eine Klasse quicksort.

Erst wollte er einen return-Befehl haben, wieso?

Hier die Application Quicksort-Start

import-Befehle

public class quicksortStart
{    quicksort  s;
       int [] b;

	public int main()
	{quicksort s=new quicksort();
	 s.sort(b);
	System.out.println("geordnetes Feld:"+ b);
	}

}

geändert:

{    quicksort  s;
       int [] b;

	public int main()
	{quicksort s=new quicksort();
	 s.sort(b);
* return b;*
	System.out.println("geordnetes Feld:"+ b);
	}

}

Als ich nun das sortierte Array b zurückgeben wollte, hat es  nicht funktioniert, Fehler meldung:
*
quicksortStart: java13:incompatible Types
found: int[]
required: int

return b*

jetzt habe ich versucht das [] davor zu tun, hat aber auch nicht gefunkst,
was ist hier falsch?
Würde mich über baldige Antwort freuen!

Hier noch zu Info, die andere Klasse, die schon funkst:

import-Befehle

public class quicksort
{
    private int[] a;
    private int n;

    public void sort(int[] a)
    {
        this.a=a;
        n=a.length;
        quicksort(0, n-1);
    }

    private void quicksort (int lo, int hi)
    {
        int i=lo, j=hi;
        int x=a[(lo+hi)/2];

        //  Aufteilung
        while (i<=j)
        {    
            while (a_<x) i++; 
            while (a[j]>x) j--;
            if (i<=j)
            {
                exchange(i, j);
                i++; j--;
            }
        }

        // Rekursion
        if (lo<j) quicksort(lo, j);
        if (i<hi) quicksort(i, hi);
    }

    private void exchange(int i, int j)
    {
        int t=a;
        a=a[j];
        a[j]=t;
    }

}    // end class QuickSorter

Tora_


----------



## Der Müde Joe (15. Dez 2008)

```
public int main()
{quicksort s=new quicksort();
s.sort(b);
return b;
System.out.println("geordnetes Feld:"+ b);
}
```

1. return ist das letzte statement in einer Methode. Danach kann nichts mehr kommen (if mal ausgeschlossen)

2. wenn du b zurückgeben willst was ein Array von int ist, musst du das auch so deklarieren
zB

```
// gibt eine int Array zurück
	public int[] bla() {
		int[]  array = new int[12];
		return array;
	}
	
	// gibt einen einzelnen int zurück
	public int foo() {
		int i = 42;
		return i;
	}
```

EDIT:
Code Formatiert


----------



## Marco13 (15. Dez 2008)

"public int main() " - Aus welchem C-Programm ist das denn kopiert?  :bae:  :wink:


----------



## ToraInfo (17. Dez 2008)

@ der müde Joe: Danke für die antwort, guck mal ob das funkst ^^ Dachte ja, er sollte den neu sortierten array zurückgeben, also alle werte

@marco 13:

Na int, weil.. ich dachte die main- methode liefert hier int werte?
Naja vllt bin ich ja auch einfach doof... *drop*

edit.

Das funktioniert immerncoh nicht  :cry: , er zeigt immernoch den gleichen fehler an

edit 2:

Jetzt funktioniert es, hab die klasse so umgemodelt:

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

public class quicksortStart
{quicksort  s;
 static int [] b;

	public static void main(String[ ] args) 
	{quicksort s=new quicksort();
	 s.sort(b);

	}

}

hattest recht marco, main hat ja imemr ne bestimmte struktur...
wieso das static vor b? Mir ist  eingefallen, dass wir das auch bei den anderen Application gemacht haben.
Jetzt hab ich nur das eine problem, wenn ich quicksortStart aufrufen will, kommt immer dieser kommentar:

Exception in thread "Main" java-lang.NoClassDefFoundError: quicksortStart/java,
wenn ich eingebe java.exe quicksortStart.java (mit wo ers findet davor)
(weiß nicht mehr, ob man  ohne java macht, aber wenn ich das hier eingebe.
java.exe quicksortStart
kommt:
Exception in thread "main" java.lang.NullPointerException
ar quicksort.sort(quicksort.java:14)
at quicksortStart.main(quicksortStart.java:12)

Irgendwie habe ich das Problem dauernd, meine Lehrerin woltle sich das nochmal angucken, hat es aber nie gemacht! *drop*
Wo steckt der Fehler?

Danke im Voraus!


----------



## SlaterB (17. Dez 2008)

bei welchem Code genau?


----------



## ToraInfo (17. Dez 2008)

Wie bei welchem  Code? Bezieht sichd as jetzt auf mein zweites edit?


----------



## Landei (17. Dez 2008)

> java.exe quicksortStart.java


javac.exe compiliert java Dateien zu class Dateien
java.exe führt class Dateien aus
--> das .java am Ende weglassen, java.exe denkt quicksortStart wäre eine Package und java eine Klasse in dieser Package. Da kann es lange suchen o<|:-)


----------



## SlaterB (17. Dez 2008)

ToraInfo hat gesagt.:
			
		

> Wie bei welchem  Code? Bezieht sichd as jetzt auf mein zweites edit?


auf das vorherige,
aber gilt für die jetztige Exception im Grunde genauso: am besten den ganzen Code dazu und insbesondere die Zeile des Fehlers (Zeile 14) gesondert markieren

es scheint daran zu liegen, dass
> static int [] b; 
null ist

b = new in[3];
oder so wäre was besseres mit Werten drin oder nicht?!


----------



## ToraInfo (17. Dez 2008)

@ slater b:
Danke für die antwort!
Aber beim anderen zeigt er ja auch einen fehler an,

also bei java.exe quicksortStart


----------



## SlaterB (17. Dez 2008)

> Aber beim anderen zeigt er ja auch einen fehler an, 

für den Fall dass es nicht klar ist: das fehlende Array und die NullPointerException haben nix mit dem java.exe-Aufruf zu tun,

bei einem falschen Aufruf kann man aber eine andere Fehlermeldung enthalten

edit: ach ja,  java-lang.NoClassDefFoundError hast du ja auch schon geschrieben,
ok, also NullPointerException ist weitaus besser, nun 'nur noch' das Programm korrigieren


----------



## Landei (17. Dez 2008)

Schreib was wie

```
static int [] b = {11,222,3,17,5,42};
```
damit er auch was zum quicksortieren hat


----------

