2015-12-20 3 views
0

Почему в нем говорится, что «decimalNum», возможно, не был инициализирован, хотя он был инициализирован в одном из случаев в инструкции switch?Инициализация после switch-statement

Scanner s = new Scanner(System.in); 

    char romeDigit; 
    int decimalNum; 
    boolean inputValid = true; 

    System.out.println("Please enter a rome digit: "); 
    romeDigit = s.next().charAt(0); 

    switch (romeDigit) { 
     case 'i': 
     case 'I': 
      decimalNum = 1; 
      break; 
     case 'v': 
     case 'V': 
      decimalNum = 5; 
      break; 
     case 'x': 
     case 'X': 
      decimalNum = 10; 
      break; 
     default: 
      inputValid = false; 
      break; 
    } 

    if (inputValid) 
     System.out.println**("Num is" + decimalNum);** 
    else 
     System.out.println("Invalid input!"); 

ответ

1

Недостаточно инициализировать decimalNum в некоторых случаях. Он должен быть инициализирован во всех случаях, включая случай по умолчанию.

default: 
     inputValid = false; 
     decimalNum = -1; // it doesn't really matter what you put here, since 
         // you are using a flag to determine if the value is valid 
     break; 
-1

или просто добавить int decimalNum = 0; где вы объявляете переменную, чтобы избежать ошибки

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