2016-03-05 68 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

這不是提問的方法。請閱讀[問]並製作[mcve]。否則我們無能爲力。 – Tunaki

+1

我更喜歡你在這裏發佈你的代碼,而不必去另一個鏈接。這很麻煩嗎? – duffymo

回答

0

如果變量operation是不是一個有效的選項,那麼你的交換機是要執行的默認選項,比打印出變量answer未初始化的值...

修復此通過在聲明它之後初始化變量。

0

你在第32行中得到的錯誤自我解釋了你必須做什麼來解決你的問題:簡單地初始化answer變量。

例如,你應該寫:

double numberOne, numberTwo, answer; 
answer = 0; 

你,因爲你不切換之前在代碼中使用的變量answer任何地方以初始化變量。然後,如果你的代碼落入'默認'開關的情況下,變量answer將不會有任何賦值...所以會在32行打印出什麼?

相關問題