public void operationOnClick(View view){
int operandOneValue = Integer.valueOf(operandOne.getText().toString());
int operandTwoValue = Integer.valueOf(operandTwo.getText().toString());
int resultValue = 0;
Button op = (Button)view;
String operation = op.getText().toString();
switch(operation){
// now i change the keyword 'return' with 'break'
// i got the problem.
case "+" : resultValue = operandOneValue+operandTwoValue;return;
case "-" : resultValue = operandOneValue-operandTwoValue;return;
case "*" : resultValue = operandOneValue*operandTwoValue;return;
case "/" : resultValue = operandOneValue/operandTwoValue;return;
}
result.setText(String.valueOf(resultValue));
}
从未使用过分配给'resultValue'的值operandOneValue + opearndTwoValue?我无法弄清楚错误?
答案 0 :(得分:2)
在你的switch语句中,将每个return;
替换为break;
,这是打破交换机的信号,但其余代码将运行。当你在void方法中编写return
时,当它到达它意味着你正在打破方法本身,因此不会读取经过它的代码。在这种情况下,如果您的开关案例匹配,则永远不会达到setText
方法。
答案 1 :(得分:1)
方法的返回类型为void
,并且您从case
内部返回,因此下面的语句无法访问。试试如下。
String output="";
switch(operation) {
case "+":
output=(operand1+operand2).toString();
break;
case "-":
output=(operand1-operand2).toString();
break;
case "*":
output=(operand1*operand2).toString();
break;
case "/":
output=(operand1/operand2).toString();
break;
}
result.setText(output);