java.lang.NumberFormatException:无效的float:" " at java.lang.StringToReal.invalidReal(StringToReal.java)

时间:2016-03-08 13:54:41

标签: java android

我是android新手。 按下计算按钮, 调用calculate方法但是当文本字段为空并且如果按下计算按钮时,应用程序崩溃。 等待回答。非常感谢。

public class NetRr extends MainActivity implements View.OnClickListener
{
float f1=0f,f2=0f,f3=0f,f4=0f,f5=0f;
String s1="",s2="",s3="",s4="",s5="";
public EditText NetrrRS,NetrrOF,NetrrRC,NetrrOB;
public Button NetrrCAL,NetrrRES;
public TextView NetrrTV;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.net_rr);

    NetrrCAL=(Button)findViewById(R.id.NetrrCAL);
    NetrrRES=(Button)findViewById(R.id.NetrrRES);
    NetrrRS= (EditText)findViewById(R.id.NetrrRS);
    NetrrOF=(EditText)findViewById(R.id.NetrrOF);
    NetrrRC= (EditText)findViewById(R.id.NetrrRC);
    NetrrOB=(EditText)findViewById(R.id.NetrrOB);
    NetrrTV=(TextView) findViewById(R.id.NetrrTV);

    NetrrCAL.setOnClickListener(this);
    NetrrRES.setOnClickListener(this);
}

@Override
public void onClick(View v)
{
    switch(v.getId())
    {
        case R.id.NetrrCAL:
            NetCal();
            break;
        case R.id.NetrrRES:
            NetRES();
            break;
    }

   }

   public void NetCal()
   {
    if(NetrrRS.getText().toString().equals(""))
    {
        NetrrRS.setText("");
    }
    else
    {
        s1=NetrrRS.getText().toString();
    }
    if(NetrrOF.getText().toString().equals(""))
    {
        NetrrOF.setText("");
    }
    else
    {
        s2=NetrrOF.getText().toString();
    }
    if(NetrrRC.getText().toString().equals(""))
    {
        NetrrRC.setText("");
    }
    else
    {
        s3 = NetrrRC.getText().toString();
    }
    if(NetrrOB.getText().toString().equals(""))
    {
        NetrrOB.setText("");
    }
    else
    {
        s4 = NetrrOB.getText().toString();
    }
     f1=Float.parseFloat(s1);
     f2=Float.parseFloat(s2);
     f3=Float.parseFloat(s3);
    f4=Float.parseFloat(s4);

     f5= (f1/f2)-(f3/f4);

    s5=String.valueOf(f5);
    NetrrTV.setText(s5);
}

public void NetRES()
{
    NetrrRS.setText("");
    NetrrOF.setText("");
    NetrrRC.setText("");
    NetrrOB.setText("");
    NetrrTV.setText("");
    NetrrRS.requestFocus();
  }
  }
谢谢..

2 个答案:

答案 0 :(得分:0)

任何数值不同的值都会抛出java.lang.NumberFormatException。

有两种选择:

当你的字符串不是数字时,你可以做一个逻辑来避免解析。或者你可以处理NumberFormatException。所以,你的应用程序不会崩溃。

答案 1 :(得分:0)

请遵守以下代码:

public class NetRr extends MainActivity implements View.OnClickListener
{
float f1=0f,f2=0f,f3=0f,f4=0f,f5=0f;
String s1="",s2="",s3="",s4="",s5="";
public EditText NetrrRS,NetrrOF,NetrrRC,NetrrOB;
public Button NetrrCAL,NetrrRES;
public TextView NetrrTV;
@Override
protected void onCreate(Bundle savedInstanceState)
 {
super.onCreate(savedInstanceState);
setContentView(R.layout.net_rr);

NetrrCAL=(Button)findViewById(R.id.NetrrCAL);
NetrrRES=(Button)findViewById(R.id.NetrrRES);
NetrrRS= (EditText)findViewById(R.id.NetrrRS);

NetrrCAL.setOnClickListener(this);
NetrrRES.setOnClickListener(this);
}


@Override
public void onClick(View v)
{
switch(v.getId())
{
    case R.id.NetrrCAL:
       sUsername = NetrrRS.getText().toString();
//checks the edit text is empty or not
         if (sUsername.matches("")) {
//if empty set yout text
             NetrrRS.setText("Your Text");
           }
        break;

    case R.id.NetrrRES:
             //same approach follows as above
        break;
}

 }

}