2016-03-05 1 views
-1

Я новичок в программировании, и эта программа работает, за исключением моей переменной answer. Программа не будет работать, если я не определяю ее в строке 8, хотя я ее определяю в инструкции switch. Ошибка указана в строке 32, и состояния,Я определяю свою переменную, но у меня все еще есть ошибка

Локальный ответ переменной может быть не инициализирован.

Заранее спасибо.

package learn; 

import java.util.Scanner; 

class calculator { 
    public static void main(String args[]) { 
     Scanner input = new Scanner(System.in); 
     double numberOne, numberTwo, answer; 
     System.out.println("Enter first number:"); 
     numberOne = input.nextDouble(); 
     System.out.println("Enter second number"); 
     numberTwo = input.nextDouble(); 
     String operation; 
     System.out.println("Enter operation (Valid operations are add, subtract, multiply, and divide)"); 
     operation = input.next(); 
     switch (operation) { 
     case "add": 
      answer = numberOne + numberTwo; 
      break; 
     case "subtract": 
      answer = numberOne - numberTwo; 
      break; 
     case "multiply": 
      answer = numberOne * numberTwo; 
      break; 
     case "divide": 
      answer = numberOne/numberTwo; 
      break; 
     default: 
      System.out.println("Invalid operation"); 
     } 
     System.out.println(answer); 
     input.close(); 
    } 
} 
+1

Это не способ задать вопрос. Пожалуйста, прочитайте [ask] и сделайте [mcve]. Мы не можем иначе. – Tunaki

+1

Я предпочитаю, чтобы вы размещали свой код здесь, а не отправлялись на другую ссылку. неужели это много неприятностей? – duffymo

ответ

0

Если переменная operation не является допустимым вариантом, то коммутатор будет выполнять настройку по умолчанию и чем распечатав значение переменной answer, которая не инициализируется ...

Устранить путем инициализации переменной после ее объявления.

0

Ошибка, которую вы получаете по строке 32, сама объясняет, что вам нужно сделать, чтобы решить вашу проблему: просто инициализируйте переменную answer.

Например, вы должны написать:

double numberOne, numberTwo, answer; 
answer = 0; 

Вы должны инициализировать эту переменную, потому что вы не используете переменную answer в любом месте вашего кода перед переключателем. Тогда, если ваш код попадет в регистр «по умолчанию», переменная answer не будет иметь назначенного значения ... так что будет напечатано в строке 32?