# Variable ohne Initialisierung in For Schleife



## FaxXer (25. Nov 2011)

Hey,
mein Problem ist wahrscheinlich wieder so simpel wie letztesmal aber irgendwie komm ich manchmal einfach nicht auf so einfache Dinge.
Hier mal ein Codeausschnitt:

```
public class Test extends Basic {
int x = 0;

Test(int Param)
{
this.x = Param;
}

LinkedList<String> Check() throws MalformedURLException, IOException
{
for (x; x <= anzahlZeichen; x++)   // bei der Variable x bekomm ich den Fehler "assignment operator expression"
{

//CODE

}	
}
}
```

Der Fehler im Code ist eigentlich klar, da man in einer for-schleife eine Initialisierung der Variable braucht?! Aber das hab ich ja oben schon gemacht.
Wenn ich es ändere und x = 0 hinschreibe kommt kein Fehler mehr. Allerdings funktioniert dann mein Programm nicht mehr, da ich vorhabe den Parameter in x zu kopieren.

Ich könnte ja den Parameter an die Methode Check übergeben aber muss ich das wirklich? Fände es eigentlich besser wenn alles im Konstruktor passiert. 

Gruß


----------



## Marco13 (25. Nov 2011)

Sowas wie

```
for (; x <= anzahlZeichen; x++)
```
geht zwar, aber das ist von der Struktur her HÖCHST fragwürdig - mach' das besser nicht so...

EDIT: z.B.: Was soll passieren, wenn man "Check" (was "check" heißen sollte) ZWEI mal aufruft?


----------



## FaxXer (25. Nov 2011)

Hmm ne andere Lösung wäre natürlich besser 
Nichts, check wird also nur einmal aufgerufen.


----------



## TKausL (25. Nov 2011)

```
for (int i = 0; i <= anzahlZeichen; i++){
}
```

Wäre z.B. eine "andere" Lösung


----------



## Michael... (25. Nov 2011)

Grundsätzlich ein merkwürdiges vorgehen. Die Schleife in der Methode Check() (methodenNamen beginnen üblicherweise mit eine kleinBuchstaben)  wird evenutell nur beim ersten Aufruf der Methode ausgeführt, ausser x wird zwischen durch wieder zurückgesetzt.

Der erste Bereich in der for Deklaration erwarten eine Zuweisung, wenn die nicht notwendig ist kann man diesen Bereich frei lassen:

```
for (    ; x <= anzahlZeichen; x++)
```
Nach der Schleife ist 
	
	
	
	





```
x == anzahlZeichen
```
Je nach Sinn und Zweck kann man ja eine neue Zählvariable deklarieren:

```
for(int z=x; z<= anzahlZeichen; z++)
```
wodurch hier der Wert von x unverändert bleibt.


----------



## FaxXer (25. Nov 2011)

Okay ich denke dann lass ich das x in der schleife einfach weg. Ich habs grad vielleicht etwas unverständlich erklärt. Ich will alle Buchstaben jeweils in einen Link einsetzten und damit dann halt was machen..
Es soll aber je nach wahl des Konstruktors beschränkt werden wieviel Buchstaben eingesetzt werden. D.h. von einem Startbuchstaben bis zu einem Endbuchstaben sollen alle eingesetzt werden.


```
public class Test extends Basic {
int x = 0;
int anzahlZeichen = 0;
char[] Zeichen  = {'A','B','C','D','E','F','G','H','I','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

Test( char startbuchstabe, char endbuchstabe) // von start bis end buchstabe
	{
		for (int k = 0; k <= Zeichen.length; k++)
		{
			if (Zeichen[k] == startbuchstabe)
			{
				x = k;
			}
			
		}
		
		for (int k = 0; k <= Zeichen.length; k++)
		{
			if (Zeichen[k] == endbuchstabe)
			{
				anzahlZeichen = k;
			}
			
		}
	}

LinkedList<String> Check() throws MalformedURLException, IOException
{
for (x; x <= anzahlZeichen; x++)   // bei der Variable x bekomm ich den Fehler "assignment operator expression"
{

String Link = "www.google.de\pageid=" + Zeichen[x];
//CODE

}	
}
}
```


Edit:
Ach doch nichts hab mich verguckt... Er springt in die Schleife.


----------

