2014-10-10 41 views
0
import java.util.Scanner; 
public class SolverTester 
{ 
public static void main(String[] args) 
{ 
    String symbolSubtract; 
    String symbolMultiply; 
    String symbolAddition; 
    String symbolDivide; 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter your equation: "); 
    int numberFirst = sc.nextInt(); 
    if(sc.findInLine("-").equals("-")) 
    { 
     symbolSubtract = sc.findInLine("-"); 
    } else if(sc.findInLine("*").equals("*")) 
    { 
     symbolMultiply = sc.findInLine("*"); 
    } else if(sc.findInLine("+").equals("+")) 
    { 
     symbolAddition = sc.findInLine("+"); 
    } else if(sc.findInLine("/").equals("/")) 
    { 
     symbolDivide = sc.findInLine("/"); 
    } 
    int numberSecond = sc.nextInt(); 
    Solver s = new Solver(numberFirst, numberSecond); 
    if(symbolSubtract.equals("-")) 
    { 
     s.subtraction(); 
     System.out.println(s.getAnswer()); 
    } else if(symbolMultiply.equals("*")) 
    { 
     s.multiplication(); 
     System.out.println(s.getAnswer()); 
    } else if(symbolDivide.equals("/")) 
    { 
     s.division(); 
     System.out.println(s.getAnswer()); 
    } else if(symbolAddition.equals("+")) 
    { 
     s.addition(); 
     System.out.println(s.getAnswer()); 
    } 
} 

}我的計算器

我的錯誤是「變量‘symbolSubtract未定義的變量’尚未初始化」。主類不相關,因爲錯誤涉及局部變量。

注:這不是一項家庭作業......我只是爲了好玩而做的。

+0

您需要初始化您的變量。 – StackFlowed 2014-10-10 19:20:28

+0

就像錯誤狀態一樣,你還沒有初始化symbolSubtract,然後你試圖將它與「 - 」 – user1071777 2014-10-10 19:20:44

+0

進行比較,局部變量不會以與成員變量相同的方式初始化 - 當你有一個未初始化的本地變量你需要確保*每個*路徑通過該方法初始化該變量。 – JonK 2014-10-10 19:21:49

回答

1
if(sc.findInLine("-").equals("-")) 
{ 
    symbolSubtract = sc.findInLine("-"); 
    ^^^^^^^^^^^^^^---conditional initialization 

只有當if()成功,變量纔會獲得一個值。

但在這行

if(symbolSubtract.equals("-")) 

你總是訪問變量,這意味着只有在某些時候將它有一個值。

0

您需要初始化的變量這樣

String symbolSubtract="-"; 
String symbolMultiply="*"; 
String symbolAddition="+"; 
String symbolDivide="/"; 

String symbolSubtract=null; 
String symbolMultiply=null; 
String symbolAddition=null; 
String symbolDivide=null; 

第二種方式,往往會導致NPE,如果你做任何操作。

另一個問題是findInLine(字符串)讀javadoc

0

如果sc.findInLine("-")不等於"-"symbolSubtract永遠不會被初始化,所以你不能使用它。解決這個問題的最簡單的方法,恕我直言,只是用默認值初始化:

String symbolSubtract = ""; 
0

如果更改此:

String symbolSubtract; 
String symbolMultiply; 
String symbolAddition; 
String symbolDivide; 

這個

String symbolSubtract = ""; 
String symbolMultiply = ""; 
String symbolAddition = ""; 
String symbolDivide = ""; 

它應該工作。