这是我到目前为止编写的程序代码。它说我没有初始化答案。我想在执行if / else树之后使用answer的值将数字转换为星号。
import java.io.*;
import java.util.*;
public class Project5 {
public static void main(String[] args){
System.out.println("Please enter a formula of this form:operator,operand,operand(ex. add,2,2):");
// wanted to change things but was not sure how far I was allowed to go so I used commas instead of spaces
//was trying to split with a delimiter but kept getting an error [Ljava.lang.String;@55e83f9
Scanner input = new Scanner(System.in);
String formula = input.nextLine();
System.out.println(formula);
String oper = formula.substring(0,3);
System.out.println(oper);
String fnum = formula.substring(4,5);
System.out.println(fnum);
String snum = formula.substring(6,7);
System.out.println(snum);
double freal = Integer.parseInt(fnum);
System.out.println(freal);
double sreal = Integer.parseInt(snum);
double answer;
if (oper.equalsIgnoreCase("add") == true){
answer = freal+sreal;
System.out.println(answer);
}
else if(oper.equalsIgnoreCase("subtract") == true){
answer = freal-sreal;
System.out.println(answer);
}
else if(oper.equalsIgnoreCase("multiply") == true){
answer = freal*sreal;
System.out.println(answer);
}
else if(oper.equalsIgnoreCase("divide") == true){
answer = freal/sreal;
System.out.println(answer);
}
else
System.out.println("not valid.");
while(answer > 0){
System.out.print("*");
answer--;
}
}}
答案 0 :(得分:2)
因为在最终的else
分支中,您没有为answer
分配值。如果那是执行的树,那么当你到达while
循环时,它将是未定义的。您可以通过将answer
初始化为某个值或确保if/else
树的每个分支都为answer
分配值来解决此问题。
修改要解决您的问题,请更改
double answer;
要
double answer = 0.0;
这将解决问题。
答案 1 :(得分:0)
你得到的错误的措辞是解决问题的良好开端:
Project5.java:41:变量答案可能尚未初始化
所以你应该初始化变量answer
修改:为了更加清晰,请将double answer;
的行更改为double answer = 0.0;
,从而初始化 answer
变量。这就是编译器所抱怨的,并且是您需要进行的唯一更改,以便编译和执行代码。顺便说一句,在此之后你将有更多的错误要处理,因为虽然你允许操作符为3个字符,但在某些情况下,你试图将它与较长的单词进行比较。因此add
有效,但subtract
没有。
答案 2 :(得分:0)
我认为唯一的问题是你必须初始化答案:double answer = 0.0;