我正在尝试进行一些计算,而旋转器是我使用过的东西之一。
这是我能做的最好的事情:
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类型的结果”
我知道我的错误是如此愚蠢,但我找不到它。
感谢。
答案 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;
}