//由于某种原因,我在这里错过了一个return语句,即使我返回了正确的类型?
static char getOperator(String firstLine){
Scanner keyboard = new Scanner(System.in);
firstLine = "Enter a valid operator (+ or - or *):";
System.out.println(firstLine);
String doohickey = keyboard.nextLine();
char operator = doohickey.charAt(' ');
if(operator=='+' && operator=='-' && operator=='*')
return operator;
}
答案 0 :(得分:2)
if(operator=='+' && operator=='-' && operator=='*')
在单线程环境中,此条件始终为false。您的运营商在评估时永远不会是3个值。
通常,您需要为方法的所有分支提供有效的返回类型。编译器可能确定不会命中此分支,因此在if-block之后需要一个return语句。
答案 1 :(得分:1)
如果条件为真,您只返回一个值。当条件不为真时,你必须返回一些东西或抛出异常。当你用括号包围if
- 条件块时,它会变得更清晰。 else
块丢失,因此并非所有分支实际都返回了值。
此条件永远不会成立,因为您的局部变量永远不能同时是全部三个字符。你的意思是写还是?
if(operator=='+' || operator=='-' || operator=='*')
{
return operator;
}
else
{
throw new NotImplementedException();
}