我错过了一个回复声明,不确定为什么?

时间:2015-03-13 02:03:25

标签: java char return

//由于某种原因,我在这里错过了一个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;
}  

2 个答案:

答案 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(); 
}