如果条件有浮动文本问题

时间:2015-02-12 23:27:22

标签: java android if-statement try-catch

我在android studio上做了一个应用程序来获取多文本的结果取决于具体的计算,但我在编辑文本中有浮动问题,用户可以选择在文本中输入数字或将其留空,所以当他按下按钮时,应用程序将根据条件作出决定,如果用户将其留空//什么都不做,如果他输入数字//则使用等式编号1。

在这种情况下,我会这样做:

try {
    n1 = Float.parseFloat(e1.getText().toString());
    n2 = Float.parseFloat(e2.getText().toString());
    n3 = Float.parseFloat(e3.getText().toString());
} catch (NumberFormatException e) {
    Toast.makeText(getApplicationContext(),
            "Invalid Information", Toast.LENGTH_LONG).show();
    return false;
}

如果我有直接行动,它会起作用,但在我的问题中,我有多个方程式,只有一个解决方案,它将是这样的:

if (n1=="" || n2=="" || n3="")
{  Toast.makeText(getApplicationContext(),
                                "Invalid Information",     Toast.LENGTH_LONG).show();}
else
{// do equation1}

但是,n1,n2,n3是“浮动”,所以这些比较会产生错误。 所以我需要纠正这个以这种方式在我的应用程序上工作????? !!!! ?????

1 个答案:

答案 0 :(得分:0)

你必须创建一个函数来告诉你String是否可以像这样转换为float:

public static boolean isNumeric(String string)
{
   try  
   {  
      float f = Float.parseFloat(string);  
   }  
   catch(NumberFormatException nfe)  
   {  
      return false;  
   }  
   return true;  
}

请注意"" (空字符串)无法转换为float,因此函数会自动处理它们。

接下来要做的是通过添加我们刚刚创建的函数调用来改进条件语句:

String n1 = e1.getText().toString();
String n2 = e2.getText().toString();
String n3 = e3.getText().toString();

if (!isNumeric(n1) || !isNumeric(n2) || !isNumeric(n3))
   return "Wrong input";
else
   //   Do your math here