需要帮助一些房地产数学在java中每次爆炸
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// This app total real estate fees for a client selling a house
Button button = (Button) findViewById(R.id.Button01);
// Sample data for priceText 360000
final EditText priceText = (EditText) findViewById(R.id.EditText01);
// Sample data for rateText .04
final EditText rateText = (EditText) findViewById(R.id.EditText02);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(jsclosingcost.this, "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT)
// Sample data for priceText 360000
float fPrice=Float.parseFloat(priceText.getText().toString() + "");
// Sample data for rateText .04
float fRate=Float.parseFloat(rateText.getText().toString() + "");
float fRealEsate = fPrice * fRate;
Toast.makeText(jsclosingcost.this, "Real Estate Brokerage Fee: " + fRealEsate, Toast.LENGTH_SHORT).show();
}
});
}
答案 0 :(得分:7)
就像其他人所说的那样,“每次都爆发”并没有给我们带来很多好处。也就是说,我把它扔进一个测试项目,发现它没有编译 - 你在这一行的末尾错过了一个分号:
Toast.makeText(jsclosingcost.this, "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT)
通过在该行添加分号,我能够编译并运行它而没有问题。
但值得注意的是......
您不需要在字符串中附加空字符串:
float fPrice=Float.parseFloat(priceText.getText().toString() + "");
float fRate=Float.parseFloat(rateText.getText().toString() + "");
以这种方式追加一个空字符串是确保将事物转换为String对象的一个老技巧,但通过在对象上调用toString,您已经保证它们是String对象。
我不知道什么被认为是“最佳实践”,但Toast.makeText方法的第一个参数是“Context”对象。从传递给你的onClick处理程序的视图对象中获取Context会让我感觉更舒服,如下所示:
Toast.makeText(v.getContext(), "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT);
您的编辑字段没有任何类型的检查,以防有人未能填写它们。例如,如果某人未能在EditText01中输入值并按下您的按钮,您将最终结束在这里有一个NullPointerException:
float fPrice=Float.parseFloat(priceText.getText().toString() + "");
你可以通过做这样的事情轻松防范这一点,而不是:
public void onClick(View v)
{
Toast.makeText(v.getContext(), "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT);
float fPrice, fRate;
try
{
fPrice = Float.parseFloat(priceText.getText().toString());
fRate = Float.parseFloat(rateText.getText().toString());
float fRealEsate = fPrice * fRate;
Toast.makeText(v.getContext(), "Real Estate Brokerage Fee: "
+ fRealEsate, Toast.LENGTH_SHORT).show();
}
catch (NumberFormatException nfe)
{
Toast.makeText(v.getContext(),
"Please enter numeric values for Price and Rate.",
Toast.LENGTH_SHORT).show();
}
}
请将按钮和编辑文本框命名为Button01和EditText02。使用好名字会让你的生活(和其他人的生活)变得更容易。