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 :(得分: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 = "";
它应该工作。