# char variable deklarieren und nicht initialisieren



## Ay Caramba (11. Apr 2008)

Hallo,

Also eine ganz grosse noobfrage. Wie kann ich eine char variable mit default initialisieren?

sowas wie String str=""; aber eben für char

Die Variable wird deklariert und erst später dann durch den Benutzer mit einem Wert als input versehen!

für int war default initialisierung doch einfach int x=0;?


----------



## Gelöschtes Mitglied 5909 (11. Apr 2008)

''


----------



## Ay Caramba (11. Apr 2008)

nein, so etwas wie char x=''; geht nicht


----------



## maki (11. Apr 2008)

char x = 0;

chars sind eher ints als strings


----------



## siriuswhite (12. Apr 2008)

Man kann doch auch gar keinen wert initialisieren
sowas wie

```
char input;
```
und später dann

```
input='a';
```
(für a ersetzt du dann natürlich das,was du speichern willst)


----------



## Ocean-Driver (12. Apr 2008)

char default = 'default';


----------



## Ark (12. Apr 2008)

Ocean-Driver hat gesagt.:
			
		

> char default = 'default';


Mein Compiler würde nicht mal den Bezeichner durchlassen.

Ark


----------



## Ocean-Driver (12. Apr 2008)

sorry ein char ist natürlich nur ein zeichnen. 

war ja auch nur ein beispiel, so wärs wohl richtig:

char a = 'a';


----------



## Ay Caramba (13. Apr 2008)

Ein Beispiel: 

Ich habe irgendeine Methode, die macht irgendwas, und dann soll als ergebnis ein Buchstabe aus dem Alphabet gespeichert werden. Es gibt 26 Möglichkeiten. d.h. ich kann nicht zum Spass die variable mit 'z' initialisieren und hoffen, dass er überschrieben wird.

Wenn ich nur char input; hinschreibe, beschwert sich der Compiler, dass die Variable may not have been initialized 
Es könnte ja sein, dass keines der 26 Fälle zutrifft und die Variable garnicht initialisiert wird, aber 100% dann ausgegeben werden soll.

Ich glaube char input=0; ist bis jetzt am besten.


----------



## Guest (13. Apr 2008)

In diesem Fall stimmt einfach die Logik deiner Anwendung nicht.
Dazu sehe ich spontan drei Möglichkeiten:

Es ist ein Fehler
	
	
	
	





```
class WasAuchImmer {
   private char input;

   ...

   public char getInput() {
      if( input == 0 ) {
         throw new IllegalStateException("Input nicht gesetzt... schäm dich.");
      }
      return input;
   }

   ...
}
```
Es ist ein Fall für Initialisierung
	
	
	
	





```
class WasAuchImmer {
   private char input = 'a';

   ...

   public char getInput() {
      return input;
   }

   ...
}
```


```
class WasAuchImmer {
   private char input;

   ...

   public char getInput() {
      ensureInputSet();
      return input;
   }

   private void ensureInputSet() {
      if( input == 0 ) {
         input = DefaultWertAnhandIrgendwelcherInformationen;
      }
   }

   ...
}
```


----------



## Guest (13. Apr 2008)

Noch die zweite Variante zum Fehlerfall
	
	
	
	





```
class WasAuchImmer { 
   private char input; 

   ... 

   public char getInput() { 
      assert input != 0 : "Input nicht gesetzt... schäm dich."; 
      return input; 
   } 

   ... 
}
```


----------

