Übergabe von Variablen

Hallo liebe Java-Koriphäen!

In meiner Klasse Draw wird der Konstruktor Trim4 aufgerufen mit diversen Parametern.
In der Klasse Trim4 sollen dann mit diesen Parametern irgendwelche Berechnungen ablaufen und die Variable „ier“ soll zum prüfen an die aufrufende Klasse Draw zurückgegeben werden. Das klappt aber nicht weil trim4 ja ne void-Methode ist. Ein public int draus zu machen klappt aber auch nicht, weil dann der Aufruf mit den Parametern nicht hinhaut. Was also tun?

Hier mal der Code, vielen Dank für eure Hilfe!

[code]
public class Draw
{
Ivn myPoints[];
public Draw(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float lines,float dots)
{
int i1,i2,ier;
float b[] = new float[3];
float x[] = new float[3];

ier = 0;
for (i1=0;i10)
{
System.out.println („Error in Trim4“);
break;
}
}
}
}

public class Trim4
{
public Trim4(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float[] b,float[] x,int ier)
{
ier = 10;
[color=red] return ier;[/color]
}
}[/code]

Moin

Das klappt aber nicht weil trim4 ja ne void-Methode ist.

jein: trim4 ist nach deinem Quellcode ein Konstruktor. Konstruktoren geben immer das gleiche zurück (ein neues Object). Die sind nicht void, da steht an sich „public Trim4 Trim4 (…)“, wobei man das erste Trim4 nicht wegzaubern kann.

Ein
public int draus zu machen klappt aber auch nicht, weil dann
der Aufruf mit den Parametern nicht hinhaut.

Dann ist es kein Konstruktor mehr.

Gibt 2 Möglichleiten:

Wenn du die Instanz trim4 nicht brauchst, dann mach ein „public static int trim4Methode (…)“ aus dem Konstruktor.

Wenn es ein Konstruktor bleiben muss, dann schreib eine neue Methode „public int getIer()“ und ruf die auf. (Also zuerst den Konstruktor, dann die Methode zum testen.

Oder verlegt den Test in den Konstruktor und arbeite mit Exceptions. Wenn der Test fehlschlägt per „throw new Exception („ier nicht OK“);“ aussteigen. (try-catch und throws-Exception nicht vergessen)

cu

Hallo,

mit einer getIer-Methode hab ich 's auch probiert, aber wenn ich die aus der Draw-Klasse ausführen will mit „int ierr = Trim4.getIer()“ klappt das auch nicht weil Eclipse dann sagt, die Methode getIer sei für den Typ Trim4 undefiniert!

mfg

Hallo.

Hast du die Methode denn auch wirklich in Trim4 implementiert? Und evtl. auch dann erstmal Trim4 kompiliert, bevor du sie aufgerufen hast?

Ansonsten würde ich dir auch zu der public „static int…“-Methode raten, die pumpkin bereits erwähnt hat. Ich sehe so spontan nämlich keinen Grund, dafür extra ein Objekt anzulegen, da du ja scheinbar keine eigenen Daten darin speicherst.

CU Chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

mit einer getIer-Methode hab ich 's auch probiert, aber wenn
ich die aus der Draw-Klasse ausführen will mit „int ierr =
Trim4.getIer()“ klappt das auch nicht weil Eclipse dann sagt,
die Methode getIer sei für den Typ Trim4 undefiniert!

Probier mal das:

 Trim4 tim4 = new Trim4(v1,v2,v3,n1,n2,n3,alpha,b,x,ier);
 if(tim4.getIer()\>0)

public class Trim4{
 public int intern\_ier;
 public Trim4(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float[] b,float[] x,int ier)
 {
 intern\_ier = ier;
 }
 public int getIer(){
 return intern\_ier;
 }
}

cu

Also jetzt siehts so aus, aber ier wird glaub ich gar nicht initialisiert, die ist nämlich immer 0!

Klasse Draw

public class Draw
{
Ivn myPoints[];
public Draw(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float lines,float dots)
{
int i1,i2,ier;
float b[] = new float[3];
float x[] = new float[3];

ier = 0;
for (i1=0;i10)
{
System.out.println („Error in Trim4“);
break;
}
}
}
}
}

Klasse Trim4

public class Trim4
{
private static int ier;
public Trim4(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float[] b,float[] x,int ier)
{
System.out.println („Test trim4“);
ier = 10;
}

public static int getIer()
{
System.out.println ("getIer " +ier);
return ier;
}
}

Also jetzt siehts so aus, aber ier wird glaub ich gar nicht
initialisiert, die ist nämlich immer 0!

Ich markier den „fehler“ mal:

public class Trim4
{
 private static int ier; //das ist die Variable STATIC\_ier;
 public Trim4(float[] v1,float[] v2,float[] v3,float[]
n1,float[] n2,float[] n3,float alpha,float[] b,float[] x,int
ier) //hier gibt es die Variable Consturctor\_ier
 {
 System.out.println ("Test trim4");
 ier = 10; //hier setzt du die Variable Consturctor\_ier. von STATIC\_ier keine Spur.

 }

 public static int getIer()
 {
 System.out.println ("getIer " +ier);
 return ier; //Hier gibts du STATIC\_ier zurück.
 }
}

Tauf public static int ier um. Oder benutz die Zeile:
this.ier = ier;
im Konstruktor.

cu

Hallo pumpkin!

Vielen Dank!!! Hat funktioniert. Habs mit dem THIS gemacht:

public class Trim4
{
public int ier;
public Trim4(float[] v1,float[] v2,float[] v3,float[] n1,float[] n2,float[] n3,float alpha,float[] b,float[] x,int ier)
{
System.out.println („Test trim4“);
ier = 1111;
this.ier = ier;
}

public int getIer()
{
System.out.println ("getIer " +ier);
return ier;
}
}

Gruß, Wintzrock