2014-06-13 57 views
-2

我正在使用eclipse作为android应用程序,用户输入了公式中使用的值。当它们不输入数值时,它会出错,所以我想要将任何空白输入改为零。继承人的代码我有:将空白输入转换为零?

EditText numAA=(EditText)findViewById(R.id.numAAAn); 
Double num1=Double.parseDouble(numAA.getText().toString()); 
if ((EditText)findViewById(R.id.numAAAn) == null) { 
    numAA=0; 
} 

而且它有上写着0错误“类型不匹配:不能从int转换为EditText上”这样的IM假设它希望它转换但林不知道怎么样。我厌倦了在0周围添加引号,但这也没有奏效。

+3

您必须像设置numAA.setText(“0”)一样设置EditText的值。 – iMBMT

回答

2

在解析double之前,请检查numAA是否为空或空。如果是,则分配默认值。

这是我的解决方案:

Double num1 = 0.0; // Default value.. 
EditText numAA = (EditText) findViewById(R.id.numAAAn); 

if (numAA.getText() != null && numAA.length() != 0) { 
    num1 = Double.parseDouble(numAA.getText().toString()); 
} else { 
    numAA.setText("0"); 
} 

您可以创建一个单独的函数来执行此操作。像:

public Double parseInput(Double defaultValue, EditText editText) { 
    if (editText.getText() != null && editText.length() != 0) { 
     return Double.parseDouble(editText.getText().toString()); 
    } else { 
     editText.setText("0"); 
    } 
    return defaultValue; 
} 

而且从主叫方,这样使用它:

Double num1 = parseInput(0.0, (EditText) findViewById(R.id.numAAAn)); 
+0

我认为这是更好的答案,因为它在使用之前正确地检查EditText是否为null。这可以通过将if语句改为:if(numAA!= null)来改善,这将减少必须查找ViewById()并投射两次的开销。 – panini

+0

好的。我有20个输入。是否有办法将所有这些输入包含到一个if语句中,还是应该使用20个单独的语句? – user3688499

+0

@ user3688499您可以创建一个单独的函数来执行此验证。如果所有的都预计是“双”,那么这很容易。 – Ambrish

0
int counter=0; 
EditText numAA=(EditText)findViewById(R.id.numAAAn); 
Double num1=Double.parseDouble(numAA.getText().toString()); 
if ((EditText)findViewById(R.id.numAAAn) == null) { 
    numAA.setText(counter+""); 
} 

试试这个:

+1

如果numAA为空,则此代码将抛出NPE,因为在调用numAA – panini

+0

上的方法后执行空检查。我有20个输入。是否有办法将所有这些输入包含到一个if语句中,还是应该使用20个单独的语句? – user3688499

0

试试下面的代码:

EditText numAA=(EditText)findViewById(R.id.numAAAn); 
    if (numAA.length()==0) { 
     numAA.setText("0");//or if you want nothing to show in the edittext, leave this one blank 
    } else { 
     Double num1=Double.parseDouble(numAA.getText().toString()); 
    } 
} 

length()方法检查的长度在edittext中的字符串。

+0

这给出了一个错误,说edittext和int是不兼容的 – user3688499

+0

看到我编辑的帖子 – kgandroid

+0

你也需要照顾'num1'变量的范围。 – Ambrish