如何测试字符串的空值

时间:2015-08-09 11:30:18

标签: android

此代码有问题!

我想检查editText值,如果它是null或不... 但它会陷入if段,如果它是editText中的值,则不会出现问题。 如果editText字符串中有值,则应进一步计算值。

我遇到的第二个问题是吐司,它不会在字符串变量中显示文本,它只是打印字符串链接。

private EditText fp;
        private EditText fC;
        private EditText drive;
        private TextView totalcost;
    public void CalcButton(View button) {
        // Converting strings to float and check if each is NULL (empty)
        if (!(fp.getText().equals(null)) || (fC.getText().equals(null)) || (drive.getText().equals(null)))
        {
            Toast.makeText(getApplicationContext(), "@string/toast", Toast.LENGTH_LONG).show();

        }else {
            String n1 = fp.getText().toString();
            float no1 = Float.parseFloat(n1);
            String n2 = fC.getText().toString();
            float no2 = Float.parseFloat(n2);
            String n3 = drive.getText().toString();
            float no3 = Float.parseFloat(n3);
            // Calculates the floats
            float calc = no1 * no2 * no3;
            // Converting and prints out the result
            String sum = Float.toString(calc);

                totalcost.setText(sum);
            }

5 个答案:

答案 0 :(得分:2)

你不应该这样做,而是这样做:

if (!fp.getText().toString().equals("")) {

} 

答案 1 :(得分:1)

要解决Toast的问题 - 请使用:

  Toast.makeText(getApplicationContext(), R.string.toast, Toast.LENGTH_LONG).show();

答案 2 :(得分:1)

尝试使用TextUtils.isEmpty(),它会检查null和0长度String

在您的if声明中,它应如下所示:

if (!TextUtils.isEmpty(fp.getText().toString())) {
    // Code
} 

Toast上,将"@string/toast"更改为R.string.toastgetApplicationContext().getString(R.string.toast);

代码应如下所示:

// Converting strings to float and check if each is NULL (empty)
if (! (TextUtils.isEmpty(fp.getText().toString()) || 
        (TextUtils.isEmpty(fC.getText().toString())) || 
        (TextUtils.isEmpty(drive.getText().toString()))))
{
    Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.toast), Toast.LENGTH_LONG).show();
}

有关getString()方法here的更多信息。

编辑:我发现您的代码也缺少一对括号( )。所以你的"不是"仅适用于第一次测试。

类似的东西:

!(test1) || test2 || test3

而不是

!((test1) || (test2) || (test3))

答案 3 :(得分:0)

要检查EditText是否为空,请执行editText.getText().toString().equals("")

所以,你的if语句将如下所示:

if (!(fp.getText().toString().equals("")) || 
     (fC.getText().toString().equals("")) ||
     (drive.getText().toString().equals("")))

你的吐司会是这样的:

Toast.makeText(getApplicationContext(), R.string.toast, Toast.LENGTH_LONG).show();

答案 4 :(得分:0)

function isNull(int resourceId, boolean getError){
    EditText editText= (EditText) findViewById(resourceId);
    String strEditText = String.valueOf(editText.getText());

    if(TextUtils.isEmpty(strEditText)) {
        if(getError) editText.setError("this is null!");
        return true;
    }else{
        return false;
    }
}

可能是这个块给你一些关于你的线索

关于如果条件; 在您的“IF条件”中,括号似乎小于必要的计数。 尝试在(!)

之后再添加一个

我想它应该是这样的; 为负面

if (!(
    (String.valueOf(fp.getText()).equals("")) || 
    (String.valueOf(fC.getText()).equals("")) || 
    (String.valueOf(drive.getText()).equals(""))
))

表示正面

if (
    (String.valueOf(fp.getText()).equals("")) || 
    (String.valueOf(fC.getText()).equals("")) || 
    (String.valueOf(drive.getText()).equals(""))
)