# Programm Umschreiben Symbolische Konstanten



## fenstergummi (17. Mai 2016)

Hallo zusammen,

folgende Aufgabe hab ich zu lösen und komme nicht weiter.

Das folgende Programm führt Berechnungen mit Kilometern, Metern und Zentimetern durch. Ändern Sie den Quelltext so, dass statt der Zahlen für die Kilometer und Meter entsprechende symbolische Konstanten verwendet werden.


```
int variable;
variable = 1000;

System.out.println("Ein Kilometer entspricht " + variable + " Metern.");

variable = 1000 * 100;

System.out.println("Ein Kilometer entspricht " + variable + " Zentimetern.");
```


Kann mir da bitte mal jemand weiterhelfen?

Vielen Dank im voraus!


----------



## Elenteria (17. Mai 2016)

Wo genau ist dein Problem? Alles was du tun musst ist die Variable 'variable' in eine Konstante umzuwandeln und ihr einen namen geben.

Konstanten werden in der Regel mit [sicharbarkeit] static final [Datentyp] [NAME] = [Wert] angelegt.
Ein paar beispiele:

public static final double PI = 3.1415;
private static final int MAX_CONNECTIONS = 500;
public static final int UMRECHNUNGS_FAKTOR = 1000; 
private static final String HELLO_WORLD = "Hello World"
public static final boolean IS_DEBUG = false;


----------



## fenstergummi (17. Mai 2016)

Stah glaube ich gerade etwas auf dem schlauch...

wäre das also wie folgt richtig?

    final int KONSTANTE = 1000;


     System.out.println("Ein Kilometer entspricht " + KONSTANTE + " Metern.");

     final long KONSTANTE1 = 1000 * 100;

     System.out.println("Ein Kilometer entspricht " + KONSTANTE1 + " Zentimetern.");


----------



## Elenteria (17. Mai 2016)

jetzt gibt der Konstanten noch ein etwas sprechenderen Namen als KONSTANTE und schreib ein public static vor das final und dann passt es. Für die Namensgebung überlegst du dir mal wofür die Konstante steht, und ich mein damit nicht den Numerischen Wert 1000.


----------



## fenstergummi (17. Mai 2016)

Alles klar, vielen Dank!


----------



## mrBrown (17. Mai 2016)

Besser wäre es, die 1000 und 100 einmal zu definieren, und diese dann bei der Variablenzuweisung zu benutzen. Ob man die variable dann auch mit einer konstanten ersetzen sollte, kommt auf den Sinn und Zweck des ganzen an...


```
private static final int KM2M = 1000;
private static final int M2CM = 100;

int variable = 1 * KM2M;
...
variable = 1*KM2M*M2CM;
...
```


----------



## VfL_Freak (17. Mai 2016)

Moin,

naja ..... ob _*KM2M *_und _*M2CM*_ wirklich sprechend sind, wage ich mal zu bezweifeln! 

Sagt Dir als Entwickler des Code wahrscheinlich schon nach einigen Monaten nichts mehr (vor allem bei größeren Projekten) und fremden betrachten ohnehin fast gar nix  

Gruß Klaus


----------



## mrBrown (17. Mai 2016)

VfL_Freak hat gesagt.:


> naja ..... ob _*KM2M *_und _*M2CM*_ wirklich sprechend sind, wage ich mal zu bezweifeln!
> 
> Sagt Dir als Entwickler des Code wahrscheinlich schon nach einigen Monaten nichts mehr (vor allem bei größeren Projekten) und fremden betrachten ohnehin fast gar nix



Schreibfaulheit  Hier versteht zumindest jeder was gemeint ist, wenn man's benutzt schreibt mans dann aus und ergänzt JavaDoc.

Ich wollte auch nur auf die MagicNumbers hinaus, die immer noch drin standen. Einfach nur die Variablen final machen ist sicherlich nicht Ziel der Aufgabe...


----------



## VfL_Freak (17. Mai 2016)

mrBrown hat gesagt.:


> Hier versteht zumindest jeder was gemeint ist


hier im Kontext von ein paar Zeilen vielleicht .... sind es erstmal ein ein paar 1000 Zeilen, sieht es wieder anders aus!
Deswegen besser erst gar nicht angewöhnen !! 

Gruß Klaus


----------

