分配给y的值x从不在switch语句中使用?

时间:2018-05-18 15:16:18

标签: java android

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?我无法弄清楚错误?

2 个答案:

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