2014-10-10 34 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 = ""; 

它应该工作。