2015-08-25 2 views
0

когда я пытаюсь использовать переменную «encryptionKey» вне цикла или if-statement, в котором он объявлен, он выдает ошибку компиляции «не может найти символ» .. любая идея?Как я могу использовать эту переменную вне цикла?

else if (inputPlainResultArray.length == 4 || inputPlainResultArray.length == 9 || inputPlainResultArray.length == 16) 
{ 
    char[] encryptionKey = inputPlainResultArray; 
    System.out.print("Encryption Key: "); 
    System.out.print(encryptionKey); 
    System.out.println(); 
    System.out.println(); 
    System.out.println(); 
    System.exit(0); 

} 
} 
} 
+1

Эти переменные не входят в сферу применения. В java область действия ограничена {}. Просто переместите это объявление переменной вверх, чтобы они были доступны дальше. –

ответ

3

Это потому, что сфера применения этого variable в фигурных скобках в заявлении loop/if. Вы не можете использовать его так. Вместо этого объявите его снаружи и используйте его.

В вашем случае это будет выглядеть примерно так:

char[] encryptionKey = null; 
if (...) 
... 
else if (inputPlainResultArray.length == 4 || inputPlainResultArray.length == 9 || inputPlainResultArray.length == 16) 
{ 
    encryptionKey = inputPlainResultArray; 
    System.out.print("Encryption Key: "); 
    System.out.print(encryptionKey); 
    System.out.println(); 
    System.out.println(); 
    System.out.println(); 
    System.exit(0); 
} 
1

создать переменную вне метода

char[] encryptionKey; 

внутри метода, то вы можете иметь

encryptionKey = ... 

единственная проблема заключается в том, что вы пытаетесь вызвать ее перед инициализацией переменной, поэтому будьте осторожны или принимайте меры такие как if(encryptionKey==null) return;

4

Потому что это локальная переменная, что означает, что вы не можете получить к ней доступ за пределами области, где она объявлена. Вы должны смотреть on which types of variables exists in Java

В вашем конкретном случае, вы можете использовать экземпляр переменной, так что вы либо объявить char[] encryptionKey вне метода:

public class YourClass{ 
    char[] encryptionKey; 
    // other methods, fields, etc. 
} 

, и вы будете иметь возможность использовать эту переменную любое место в этом классе, или объявить внутри метода, немного вне else-if сферы:

char[] encryptionKey = null; 
if (...){} 

else if (...){ 
char[] encryptionKey = inputPlainResultArray; 
} 

поэтому она будет видна для всех entiti внутри этого конкретного метода.

0

Вы не можете получить доступ к переменной «encryptionKey» из-за пределов цикла, потому что вы объявили ее внутри цикла. Переместить декларацию снаружи, и она будет работать.

char[] encryptionKey;  
else if (inputPlainResultArray.length == 4 || inputPlainResultArray.length == 9 || inputPlainResultArray.length == 16) 
{ 

      encryptionKey = inputPlainResultArray; 
      .... 
} 
0

Используйте перерыв ключевое слово, не System.exit (0);

+0

Это для вашего второго вопроса – isurujay

Смежные вопросы