2017-11-15 3 views
-4

Ich habe den folgenden Code ausprobiert.Variablen werden nicht initialisiert in if-Anweisung

int index, use, comp; 
    for (index = 0; index < 3; index++) 
    { 
     if (user1.equalsIgnoreCase(options[index])) 
     { 
      use = index; 
     } 
    } 
    for (index = 0; index < 3; index++) 
    { 
     if (opt.equalsIgnoreCase(options[index])) 
     { 
      comp = add + index; 
     } 
    } 
    int sum = comp + use; 

An der Linie int sum = comp + use;, Ich erhalte eine Fehlermeldung, dass Variablen comp und Verwendung werden nicht initialisiert. Wie kann ich die Werte, die ich während der Ausführung der Schleife erhalten habe, in diesen Variablen speichern?

+1

'if' ist keine Schleife – Jens

+1

' int index = 0, use = 0, comp = 0; 'sollte es funktioniert. Das Problem ist, dass die Ausführung der if-Anweisung nicht garantiert ist. In diesem Fall hätte die Variable 'use' keine Zuweisung. – Henrik

Antwort

1

Der Compiler teilt Ihnen mit, dass es möglich ist, dass comp und use bis zum Erreichen der Zeile int sum = comp + use; keine Werte erhalten haben. Dies ist aus der Sicht des Compilers eindeutig zutreffend: Es gibt keine Möglichkeit, sicher zu sein, dass in diesen Variablen Werte enthalten sind.

Ein einfacher Weg, dies zu lösen ist, sie am Anfang zu initialisieren:

int comp = 0; 
int use = 0; 

Aber zuerst sicher sein, dass dies die Funktionalität, die Sie wollen nicht vermasseln.

0

Sie müssen die Summe innerhalb der for-Schleife berechnen, andernfalls sind die beiden Variablen zugänglich (außerhalb der Schleife).

int index; 
int sum = 0; 
int comp= 0; 
int use = 0; 
//would've been better if you specified what these variables are for though. 

    for (index = 0; index < 3; index++) 
    {   
     if (user1.equalsIgnoreCase(options[index])) 
     { 
      use = index; 
     } 
     if (opt.equalsIgnoreCase(options[index])) 
     { 
      comp = add + index; 
     }   
     sum = comp + use; 
    } 
Verwandte Themen