Variable may not be initialized

  • import java.util.*;

    public class Flug
    {

    public static void main (String[] args)
    {

    int schalter;
    char ausweis;
    char j;
    Scanner einlesen = new Scanner(System.in);

    System.out.println("Wollen Sie zu Schalter 1 oder Schalter 2 gehen? ");
    schalter = einlesen.nextInt();

    if ( schalter == 1) {
    System.out.println("Sie haben Schalter 1 gewaehlt!");
    System.out.println("Wollen sie ihren Ausweis herzeigen? ");
    ausweis = einlesen.next().charAt(0);
    }
    if ( ausweis == 'j')
    {
    System.out.println("Danke, auf Wiedersehen");
    }

    --------------------------------

    Das ist nur der erste Teil. Dürfte aber schon nur so vor Fehlern strotzen.
    Ich hab 0 Plan warum!!
    Allein das er andauernd meint, dass die Variable ausweis nicht initialisiert worden ist, versteh ich nicht. Hab sie oben doch eh mit char ausweis initialisiert!?

  • du hast ausweis nicht initialisiert, sondern deklariert.

    deklarieren bedeutet, dass du eine Varirble mit einem bestimmten Typ deklarierst.
    char ausweis;

    Bei initialisieren wird der variable ein Anfangswert zugewiesen.
    ausweis = "";

    man kann aber auch beides machen:
    char ausweis = "";

  • Muss ich einen Anfangswert zuweisen? Kann ich nicht nur "" machen? Das funktioniert nämlich nicht.
    Ich würd gern char ausweis = ""(j,n)"; machen aber das geht auch ned :P

  • Du hast die Variable ausweis nicht initialisiert, sondern nur deklariert.

    Wenn Du eine Variable deklarierst:

    Code
    Object var;

    Dann legst Du damit fest, das es in Deinem Programm (genauer gesagt in dem Block, in dem diese Variable deklariert wurde), eine Variable vom Typ 'Object' mit dem Namen var gibt. Der Wert dieser Variablen sollte dann eine Referenz sein, die auf einen Speicherbereich zeigt, unter dem das Objekt zu finden ist.

    Diese Referenz hast Du aber bis jetzt noch nicht angegeben, d.h. die Variable 'var' zeigt jetzt ersteinmal auf garnichts. Und wenn in Deinem Code die Bedingung ( schalter == 1) nicht wahr ist, dann wird die Variable ueberhaupt niemals einem Wert zugewiesen. Und das darf hier nicht sein.

    Und um das noch ein wenig komplizierter zu machen: Wenn Du eine Variable als Instanzvariable deklarierst:

    Code
    class Foo{
    
    
      private Object var;
    
    
    }

    Dann wird die Variable automatisch mit einem Wert initialisiert: Bei einem Objekt vom Typ Object ist das die Nullreferenz ('null'), bei numerischen werten 0, 0.0, 0.0F usw.

    Bei Arrays wird ausserdem jedes Element auf diese Weise initalisiert.

    PS: http://www.informatik-forum.at/showpost.php?p=140998&postcount=3

  • Muss ich einen Anfangswert zuweisen? Kann ich nicht nur "" machen? Das funktioniert nämlich nicht.
    Ich würd gern char ausweis = ""(j,n)"; machen aber das geht auch ned :P

    char ausweis = ""; geht sicher nicht, weil "" einen String deklariert. Also das selbe wie

    Code
    char ausweis = new String();

    und dann geht natuerlich schief, den ein zeichen ist ja kein String; Wenn Du ausweis als einen String deklarierst, kannst Du ihm Zeichenketten wie "(j,n)" zuweisen.

    Was Du machen kannst ist (gross und kleinschreibung beachten!)

    Code
    Character ausweis = null;

    D.h du deklarierst ausweis als Object vom Typ Character, und initialisierst in mit der Nullreferenz.

    Ein Character und der primitive Datentyp char sind zwar eigentlich nicht das selbe, aber der Java compiler kuemmert sich darum das Du sie fast wie gleich behandeln kannst.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!