2013-03-05 2 views
-2

Я пишу программу, которая содержит ComboBox, где вы выбираете текст, и этот текст будет преобразован в коэффициент, используя параметр switch в программе. Проблема в том, что я не могу использовать переменный внешний элемент. Я очень ценю, если кто-то может помочь.Переменные из оператора switch за пределами

Пример кода:

double Cst1; 
String s = Cst.getSelectedItem().toString(); 

switch (s) { 

    case "ABC": 
     Cst1 = -25; 
     break; 

    case "CBA": 
     Cst1 = -10; 
     break; 

    case "BCA": 
     Cst1 = 0;  
     break; 

    case "ACB": 
     Cst1 = 10;    
     break; 

    default: 
     answer.setText("ERROR"); 
     break;      
} 

double C14 = 9 * Cst1; 
+0

использования какой переменной? Он находится вне коммутатора. –

+0

Что именно вы подразумеваете под словом «Я не могу использовать переменный элемент снаружи»? – NPE

+1

Этот код не будет компилироваться, так как Cst1 не может быть инициализирован. –

ответ

0

Если у вас есть строковое значение, которое явно не охватывает в вашем коммутаторе Cst1 никогда не будет инициализирован. Например, строка "AAA" попадет в случай по умолчанию.

Есть два возможных исправлений:

  1. Initialize CST1 как

    double Cst1 = 0. 
    
  2. Set CST1 в вашем случае по умолчанию, как

    default: 
        Cst1 = 0.; 
        // Display your error 
        break; 
    
+0

Это работает, спасибо –

2

Если вы получите сообщение об ошибке, которое говорит о том, что переменная не инициализирована, попробуйте следующее:

double Cst1 = 0.;