# Schleife im Konstruktor?



## Titanpharao (7. Nov 2007)

Hi ist es möglich eine schleife im Konstruktor zu schreiben?  Also habe das Problem da, erkennt man ja eindeutig das Problem...


```
public Auto getauto(int nr){
		return new Auto(sheet.getCell(0,nr).getContents(),sheet.getCell(1,nr).getContents(),sheet.getCell(2,nr).getContents(),
				sheet.getCell(3,nr).getContents(),sheet.getCell(4,nr).getContents(),sheet.getCell(5,nr).getContents(),sheet.getCell(6,nr).getContents(),
				sheet.getCell(7,nr).getContents(),sheet.getCell(8,nr).getContents(),sheet.getCell(9,nr).getContents(),sheet.getCell(10,nr).getContents(),
				sheet.getCell(11,nr).getContents(),sheet.getCell(12,nr).getContents(),sheet.getCell(13,nr).getContents(),sheet.getCell(14,nr).getContents(),
				sheet.getCell(15,nr).getContents(),sheet.getCell(16,nr).getContents(),sheet.getCell(17,nr).getContents());		
	}
```


----------



## tfa (7. Nov 2007)

Klar ist das möglich. Schreibe doch einen Konstruktor für Auto, der das sheet-Objekt übergeben bekommt.


----------



## Titanpharao (7. Nov 2007)

lol stimmt ja...~.~ *probier*


----------



## Titanpharao (7. Nov 2007)

ne kann eigentlich nicht gehen, da die veriablen immer anders heißen. Wenn ich das in einem array gespichert hätte würde es gehen, aber das soll so sein.


```
class Auto {
	public String ffid,sid,fuid,swf,fubzws,typ,fgbzwbg,fbzwb,d,l,tun,wg,verh,zeit,rb,wfuerk,klartext,dcode;

	public Auto(String ffid, String sid, String fuid, String swf,
			String fubzws, String typ, String fgbzwbg, String fbzwb, String d,
			String l, String tun, String wg, String verh, String zeit,
			String rb, String wfuerk, String klartext, String dcode) {
		this.ffid = ffid;
		this.sid = sid;
		this.fuid = fuid;
		this.swf = swf;
		this.fubzws = fubzws;
		this.typ = typ;
		this.fgbzwbg = fgbzwbg;
		this.fbzwb = fbzwb;
		this.d = d;
		this.l = l;
		this.tun = tun;
		this.wg = wg;
		this.verh = verh;
		this.zeit = zeit;
		this.rb = rb;
		this.wfuerk = wfuerk;
		this.klartext = klartext;
		this.dcode = dcode;
	}
}
```


----------



## André Uhres (7. Nov 2007)

Du könntest in einer for-Scheife mit switch-Anweisung auf die Variablen verteilen.


----------



## Titanpharao (7. Nov 2007)

hä? Das versteh ich jetzt nicht so richtig... :bahnhof:


----------



## André Uhres (7. Nov 2007)

Titanpharao hat gesagt.:
			
		

> hä? Das versteh ich jetzt nicht so richtig... :bahnhof:


Sry, war auch keine gute Idee. So könnte es gehen:

```
public Auto(Sheet sheet, int nr) {
        ffid = sheet.getCell(0, nr).getContents();
        sid = sheet.getCell(1, nr).getContents();
        //...
    }
```


----------



## Titanpharao (7. Nov 2007)

So habe ich es auch schon gemacht... na ok, Array > all ;-) 
danke


----------



## Guest (7. Nov 2007)

innerhalb eines konstruktors  ein new derselben klasse aufzurufen geht nicht, da ein Konstruktor den Rückgabewert void hat. Das stimmt zwar nicht so ganz, da er ja eine Referenz auf eine Instanz zurückgibt, aber es hat wohl hier seinen Ursprung in C wo ein void* auch ein Zeiger auf alles repräsentiert.

für alternative konstruktorenaufrufe ist this() vorgesehen.


```
class ClassA {

   ClassA(int n) {
   }

   ClassA() {
       this(1234);
   }

}
```

mfg


----------



## tfa (7. Nov 2007)

Ein Konstruktor ist keine Methode und liefert auch keine Referenzen zurück, und void schon gar nicht.
Die Referenz auf das neue Objekt wird vom new-Operator zurückgeliefert, der Konstruktor dient praktisch als Initialisierer für das Objekt.


----------

