# switch case must be constant expression



## Drake (9. Jul 2006)

Hallo

habe ein Problem mit einem case


```
Options options = new Options();

switch (e.getKeyCode()) {
	case options.getSteering("LEFT"): //LEFT
		Spiellogik.movePlayer(Const.DIRECTION_TURN_LEFT,Spiellogik.localPlayer);
	break;
}
```

options.getSteering() liefert definitv einen int Wert, darum versteh ich den Fehler "case expressions must be constant expressions" nicht

mfg
Drake


----------



## Gelöschtes Mitglied 5909 (9. Jul 2006)

probier mal
int foo = e.getKeyCode();

switch (a)


----------



## Lim_Dul (9. Jul 2006)

```
case options.getSteering("LEFT"): //LEFT
```
Da muss eine Konstante hin.


----------



## Drake (9. Jul 2006)

```
int keyCode = e.getKeyCode();
switch (keyCode)
```

ändert leider nicht daran, bleibt doch der gleiche int Wert (habs sicherheitshalber trotzdem probiert).

der Code von getSteering ist folgender

```
public int getSteering(String direction) {
	if(direction.equalsIgnoreCase("UP"))
		return this.steering[0];
	else if(direction.equalsIgnoreCase("RIGHT"))
		return this.steering[1];
	else if(direction.equalsIgnoreCase("DOWN"))
		return this.steering[2];
	else if(direction.equalsIgnoreCase("LEFT"))
		return this.steering[3];
	else
		return 0;
	}
```


----------



## Drake (9. Jul 2006)

Lim_Dul hat gesagt.:
			
		

> ```
> case options.getSteering("LEFT"): //LEFT
> ```
> Da muss eine Konstante hin.



die Methode liefert doch einen festen Wert der überprüft werden sol oder versteh ich da jetzt irgendwas komplett falsch


----------



## AlArenal (9. Jul 2006)

Versuch mal

```
final int keyCode = e.getKeyCode();
switch (keyCode)
```


----------



## Lim_Dul (9. Jul 2006)

Drake hat gesagt.:
			
		

> Lim_Dul hat gesagt.:
> 
> 
> 
> ...



Die Methode liefert einen Wert, der vom Argument und das was die Methode macht, abhängig ist.
Dort muss aber ein fester Wert für den Compiler stehen, also eine Konstante. Beispielsweise case 42: geht, aber nicht case getValue():, selbst wenn getValue() nichts anderes macht als 42 zurückzulieferen.


----------



## Drake (9. Jul 2006)

> Die Methode liefert einen Wert, der vom Argument und das was die Methode macht, abhängig ist.
> Dort muss aber ein fester Wert für den Compiler stehen, also eine Konstante. Beispielsweise case 42: geht, aber nicht case getValue():, selbst wenn getValue() nichts anderes macht als 42 zurückzulieferen.



Ok, wenn der Compiler darauf besteh muss ich meine vier abfragen dessen betreffend also in if else packen, dann klappts auch.

mfg
Drake


----------

