problem mit package

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Code:
package algo;

public class Sortieren
{
  double[] bubblesort(double[] a)
  {
    double[] da = new double[a.length];

    return da;
  }
}

die fehlermeldung besagt das ich die datei doch bitte Sortieren.java nennen soll. das ganze ist aber ein package. da sollte ich das ganze doch algo.java nennen, oder ?
 
ok...nochmal ins schlaue buch geschaut und ich nenn das ganze doch sortieren.java.
 
Die Fehlermeldung hat recht. Eine public class "Sortieren" muss in einer Datei names Sortieren.java sein.

Beste Grüße
Manual
 
also neuer versuch:

Code:
package algorithmen;

public class Sortieren
{
  double[] bubblesort(double[] a)
  {
    double[] da = new double[a.length];

    return da;
  }
}

abgespeichert unter Sortieren.java. ohne fehlermeldung kompiliert. weitere datei:

Code:
import algorithmen.Sortieren;

public class doing
{ 
  public static void main(String args)
  {
    double[] da = {0, 1, 4, 3, 2};
    double[] db = new double[5];

    db = Sortieren.bubblesort(da);  
  }
}

fehlermeldung: cannot find symbol in zeile 1 bei import. wenn ich die zeile mit algorithmus.* schreibe kommt nur folgende fehlermeldung: cannot access Sortieren.
beide dateien sind im selben verzeichnis, was mit classpath in windows gesetzt ist. kann mir jemand helfen ?
 
Gast hat gesagt.:
Die Fehlermeldung hat recht. Eine public class "Sortieren" muss in einer Datei names Sortieren.java sein.
Ein weit verbreiteter Irrtum. Keine schlechte Praxis natürlich, aber dennoch falsch.

beide dateien sind im selben verzeichnis
Die Package-Struktur muss auch der Ordnerstruktur entsprechen. Alles, was im Package "algorithmen" ist, muss also auch in einem gleichnamigen Ordner sein.
 
danke ! hab für das package ein verzeichnis algorithmen erstellt. dort nochmal kompiliert und er hat es akzeptiert.
 
danke auch für den non static hinweis. das bearbeite ich gerade.
 
Code:
import algorithmen.Sortieren;

public class Doing
{ 
  Doing()
  {
    double[] da = {0, 1, 4, 3, 2};
    double[] db = new double[5];

    db = Sortieren.bubblesort(da);  
  } 

  public static void main(String args)
  {
    new Doing();
  }
}

Fehlermeldung: non-static methode bubblesort(double[]) cannot be referenced from a static context. ich habe den aufruf von bubblesort extra in den konstruktor verlegt, der meines wissens nach nicht static ist so wie das in meinem buch beschrieben wird, weiß aber leider nicht wieso er es nicht akzeptiert.[/code]
 
erwähnt sei noch:
Code:
public static void main(String args)

ist keine Main-Methode die das Programm startet, sondern
einfach eine Methode namens main.

So sollte es sein:
Code:
public static void main(String[] args)
 
Der Müde Joe hat gesagt.:
QuickFix:
bubblesort als public static deklarieren

-->
Code:
public static double[] bubblesort(double[] d) { /** do it */ }

Was dann auch statisch aufgerufen wird:

Code:
Sorting.bubblesort();

im Gegensatz dazu nicht statisch:
Code:
public double[] bubblesort(double[] d) { /** do it */ }

//Aufruf:

Sorting s = new Sorting();
s.bubblesort(someDoubleArray);
 
danke schonmal. ich habe das main ausgebessert und das public bei bubblesort hatte ich schon vorher zugefügt (nach einem dezentem hinweis des kompilers). bekomme aber immer noch die meldung mit dem static fehler und hab keine ahnung wieso:

Code:
package algorithmen;

public class Sortieren
{
  public double[] bubblesort(double[] a)
  {
    double[] da = new double[a.length];

    return da;
  }
}
Code:
import algorithmen.Sortieren;

public class Doing
{ 
  Doing()
  {
    double[] da = {0, 1, 4, 3, 2};
    double[] db = new double[5];

    db = Sortieren.bubblesort(da);  
  } 

  public static void main(String[] args)
  {
    new Doing();
  }
}
 
ok. hab mir deine dynamische lösung mal genau durchgelesen und ..... es funktioniert.
danke !
 
der vollständigkeit halber:

Code:
import algorithmen.Sortieren;

public class Doing
{ 
  Doing()
  {
    double[] da = {0, 1, 4, 3, 2};
    double[] db = new double[5];

    Sortieren s = new Sortieren();

    db = s.bubblesort(da);  
  } 

  public static void main(String[] args)
  {
    new Doing();
  }
}

danke nochmal an alle und vor allem joe !
 
Wobei hier der statische Ansatz zu bevorzugen wäre ;-)

--> erspart Objekterzeugung (unter anderem)

also einfach
public static double[] bubble... und aufruf mit
Sortieren.bubblesort(da)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben