我的计算器的未定义变量

时间:2014-10-10 19:19:17

标签: java variables

 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"尚未初始化"。主类是不相关的,因为错误涉及局部变量。

注意:这不是家庭作业......我只是为了好玩而做。

4 个答案:

答案 0 :(得分:1)

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

只有当if()成功时,变量才会获得一个值。

但是在这一行

if(symbolSubtract.equals("-"))

你总是访问变量,这意味着只有一些时间它会有一个值。

答案 1 :(得分:0)

你需要像这样初始化你的变量

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

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

如果对它进行任何操作,第二种方法通常会导致NPE。

其他问题是findInLine(String)读取javadoc

答案 2 :(得分:0)

如果sc.findInLine("-")不等于"-",则symbolSubtract永远不会被初始化,因此您无法使用它。最简单的方法是恕我直言,只是用默认值初始化它:

String symbolSubtract = "";

答案 3 :(得分:0)

如果你改变了这个:

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

到这个

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

它应该工作。