【问题标题】:if condition with float text issue如果条件与浮动文本问题
【发布时间】:2015-02-12 23:27:22
【问题描述】:

我在 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 是“float”,所以这些比较会出错.. 所以我需要纠正这个问题才能以这种方式在我的应用程序上工作???????!!!!?????

【问题讨论】:

    标签: java android if-statement try-catch


    【解决方案1】:

    你必须创建一个函数来告诉你字符串是否可以像这样转换为浮点数:

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

    请注意,“”(空字符串)不能转换为浮点数,因此函数会自动处理它们。

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

    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
    

    【讨论】:

    • 当我按照你写的操作时,我遇到了另一个问题:operator * cannot be applied to java.lang.string double
    • 谢谢你,我通过将字符串转换为浮点数解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多