需要帮助java中的一些房地产数学

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)

McG*_*one 7

就像其他人所说的那样,"每次爆炸"都不会给我们带来太多的影响.也就是说,我把它扔进一个测试项目,发现它没有编译 - 你在这一行的末尾错过了一个分号:


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.使用好名字将使您的生活(和其他人的生活)更容易.