2014-09-25 3 views
1

Я пытаюсь сделать базовый калькулятор для изучения Java, и он продолжает говорить: «Эта локальная переменная, возможно, не была инициализирована» в моей инструкции switch. Вот сегмент кодаchar - Эта локальная переменная, возможно, не была инициализирована

char operator; 

    System.out.println("Enter First number"); 
    firstNumber = scan.nextDouble(); 

    System.out.println("Enter Second Number"); 
    secondNumber = scan.nextDouble(); 

    switch(operator) { 
    case '+': 
     answer = firstNumber + secondNumber; 
     System.out.println("Result = "+ answer); 
     break; 

(после этого он продолжает с утверждением переключателя)

Когда я пытаюсь скомпилировать свою программу, он говорит мне, что переключатель (оператор) оператор не имеет был инициализирован и говорит: «Эта локальная переменная, возможно, не была инициализирована» с красной линией под «оператором».

Он сказал мне, что я должен написать:

char operator = 0; 

Это не сработало, поэтому я попытался

char operator = null; 

И это тоже не сработало Он автоматически запускается в

default: 
     System.out.println("Syntax Error"); 

который является моим дефолтом, если корпус не выполнен должным образом. Это работает, потому что я уже определил, что должен быть Оператор.

Что делать, чтобы решить эту проблему?

PS извините, если это грязный пост (это мой первый на StackOverflow), если вам нужно больше информации просто спросите

+0

Что такое ввод и вывод образца? Как вы даете ценность оператору? – zerocool

+2

Вы никогда ничего не присваиваете 'operator', но вы ожидаете, что программа сделает что-то полезное с ним? – ajb

+0

'0' не является символом, это целое число, поэтому да' char operator = 0' потерпит неудачу. Вы можете инициализировать его на 'char operator = '0';' но на самом деле, почему бы вам, если вы по какой-то причине ожидаете, что он будет соответствовать '+' в инструкции switch? Откуда вы ожидаете значения для операторской переменной? – scrappedcola

ответ

1

вы должны использовать следующий код в этом операторе case.char должен быть инициализирован перед использованием

0

Внутри вашего оператора switch вы имеете дело только для +, поэтому оператор инициализации до 0 или null будет соответствовать только default футляру. Лучше инициализировать его с +

0

Если вы хотите сделать только opperation «+» для instace, поэтому инициализировать оператор с: operator = '+'; Но, если Yout хотите выбрать какую-то операцию делать известково так инициализировать оператор с нулем, задать для работы на консоли:

System.out.println("choose operator"); 
operator = scan.next().charAt(0); 

Теперь вы можете использовать оператор на корпусе выключателя без проблем.
Вы также отправляете сообщение по умолчанию, если чат напечатал его не в операторах случаев.