9

我有 3输入类型为数字的编辑文本和 1 个显示完成的按钮

我必须检查在编辑文本中输入的值的两个条件

当我单击完成按钮时,我应该能够执行以下操作

----首先是检查编辑文本是否为空

if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();

----二是检查输入的值是否在一定范围内

if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();

a,b,c 和 a1,b1,c1 都表示相同的值,我刚刚将 a,b,c 的值解析为a1,b1,c1中的int

----那么在其他部分,如果它们通过上述条件,我应该能够使用这些值。

else
{
//do something
}

我的问题是如何使它工作,因为 当所有 3 个编辑文本都为空时,我在单击完成按钮时遇到强制关闭错误。我尝试将它们放入if、else if 和 else 循环中,并尝试了if、if 和 else 循环

如果它不满足两个条件然后转到其他部分,我应该如何编码?

帮助 !!:)

4

5 回答 5

7
if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();
else {
    //Convert your a/b/c.getText() to a1/b1/c1 now you know they are not empty
    if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
        Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
    else
    {
    //do something
    }
}
于 2012-06-13T19:04:34.260 回答
2

我认为这是因为您正在尝试对为空的变量执行某种检查。你可以试试:

if (a.getText() == null || b.getText() == null || c.getText() == null ){
     //Toast code
} else {
    //Convert string to int code
    if ((a1<5 || a1>10) || (b1<5 || b1>10) || (c1<5 || c1>10)){
    //Toast code
    } else {
        //Do something with numbers in the correct range code here
    }
}

查看您的 logcat 输出也将有所帮助。你应该看到一行写着:“Caused by ....”,它会告诉你是什么导致你的力关闭。

于 2012-06-13T19:12:28.037 回答
1

不是 Android 程序员,但如果 x.getText() 返回 null,.toString() 会产生 NullPointerException。创建方法:

private static boolean isEmpty(Button button)
{
    if (button != null)
    {
        final String text = button.getText();
        return text != null && text.length() > 0;
    }

    return false;
}

然后:

if (isEmpty(a) || isEmpty(b) || isEmpty(c)
    ......
于 2012-06-13T19:31:39.353 回答
1

我认为你只需要做第二个 if 和 else if

if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();
else if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
else {
    //logic
}

有点奇怪的执行流程,但我认为这会解决你的问题

于 2012-06-13T19:04:46.100 回答
1

这样做,肯定会工作,检查:

 if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))

  Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();

 else{

if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
else
{
//do something
}}
于 2017-01-31T10:21:07.287 回答