与微调操作混淆

时间:2014-01-11 14:32:17

标签: android

我正在尝试进行一些计算,而旋转器是我使用过的东西之一。

这是我能做的最好的事情:

public class Price1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.price1);

    int price1 = getIntent().getExtras().getInt("theprice");

    int price2 = calculateprice2(price1);

    TextView tvprice1 = (TextView) findViewById(R.id.price1text2);
    tvprice1.setText(String.valueOf(price2));
}

private int calculateprice2(int price1) {
    Spinner sp1 = (Spinner) findViewById(R.id.spinner1);

    if (sp1.getSelectedItemPosition() == 1) {
        return (int) (price1 - (price1 / 10));
    } else if (sp1.getSelectedItemPosition() == 2) {
        return (int) (price1 - (price1 / 5));
    } else if (sp1.getSelectedItemPosition() == 3) {
        return (int) (price1 - ((price1 * 3) / 10));
    } else if (sp1.getSelectedItemPosition() == 4) {
        return (int) (price1 - ((price1 * 33) / 100));
    }

}

阅读代码。我想你会理解我的目标(我希望你这样做,因为当你的英语非常糟糕时很难解释:-))

问题是我在“calculateprice2(int price2)”上遇到此错误: “此方法必须返回int类型的结果”

我知道我的错误是如此愚蠢,但我找不到它。

感谢。

4 个答案:

答案 0 :(得分:2)

要修复编译错误,如果calculateprice2()条件都不匹配,if不会返回任何内容。在这种情况下,您可能需要返回一些合理的默认值,例如添加

return 0;

在方法结束时。

要让它像您想要的那样运行,请注意以下事项:

  • 项目位置从索引0开始,而不是1。

  • onCreate()仅在创建活动时运行。要在更改选择时运行该方法,请查看setOnItemSelectedListener()

答案 1 :(得分:0)

这样做 -

private int calculateprice2(float price20) {
    Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
    Integer price1 = getIntent().getExtras().getInt("theprice");
    if (sp1.getSelectedItemPosition() == 1) {
        return (int) (price1 - (price1 / 10));
    } else if (sp1.getSelectedItemPosition() == 2) {
        return (int) (price1 - (price1 / 5));
    } else if (sp1.getSelectedItemPosition() == 3) {
        return (int) (price1 - ((price1 * 3) / 10));
    } else if (sp1.getSelectedItemPosition() == 4) {
        return (int) (price1 - ((price1 * 33) / 100));
    }
    else {
        return 0;
    }
}

答案 2 :(得分:0)

添加

else return 0;

calculateprice2()函数的末尾。您看到您的函数在所有情况下都没有返回值。

答案 3 :(得分:0)

如果没有更正任何if/else语句,则应提供默认返回值。例如,您可以声明retVal变量:

private int calculateprice2(int price1) {
    Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
    int retVal = 0;
    if (sp1.getSelectedItemPosition() == 1) {
        return (int) (price1 - (price1 / 10));
    } else if (sp1.getSelectedItemPosition() == 2) {
        return (int) (price1 - (price1 / 5));
    } else if (sp1.getSelectedItemPosition() == 3) {
        return (int) (price1 - ((price1 * 3) / 10));
    } else if (sp1.getSelectedItemPosition() == 4) {
        return (int) (price1 - ((price1 * 33) / 100));
    }
    return retVal;

}