SJS*_*SJS -1 java math android
需要帮助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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
就像其他人所说的那样,"每次爆炸"都不会给我们带来太多的影响.也就是说,我把它扔进一个测试项目,发现它没有编译 - 你在这一行的末尾错过了一个分号:
Toast.makeText(jsclosingcost.this, "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT)
Run Code Online (Sandbox Code Playgroud)
通过在该行中添加分号,我能够编译并运行它而不会出现问题.
但值得注意的是......
您不需要在字符串中附加空字符串:
float fPrice=Float.parseFloat(priceText.getText().toString() + "");
float fRate=Float.parseFloat(rateText.getText().toString() + "");
Run Code Online (Sandbox Code Playgroud)
以这种方式附加一个空字符串是一个老技巧,以确保将事物转换为String对象,但通过在对象上调用toString,您已经保证它们是String对象.
我不知道什么被认为是"最佳实践",但Toast.makeText方法的第一个参数是"Context"对象.从视图对象传递给你的onClick处理程序,我感觉更舒服,如下所示:
Toast.makeText(v.getContext(), "Doing Closing Cost Breakdown", Toast.LENGTH_SHORT);
Run Code Online (Sandbox Code Playgroud)
您没有对编辑字段进行任何类型的检查,以防有人无法填写它们.例如,如果某人未能在EditText01中输入值并按下您的按钮,您将最终得到NullPointerException就在这儿:
float fPrice=Float.parseFloat(priceText.getText().toString() + "");
Run Code Online (Sandbox Code Playgroud)
你可以通过做这样的事情轻松防范这一点,而不是:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
请将按钮和编辑文本框命名为Button01和EditText02.使用好名字将使您的生活(和其他人的生活)更容易.
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |