如何在 if else 循环中对同一数据使用多个条件? - java/安卓

Posted

技术标签:

【中文标题】如何在 if else 循环中对同一数据使用多个条件? - java/安卓【英文标题】:How to use multiple conditions on the same data in an if else loop? - java/android 【发布时间】:2012-06-16 19:21:21 【问题描述】:

我有 3 个 edittexts 输入类型为 number 和 1 个 button 表示 Done

我必须检查 edittexts

中输入的值的两个条件

当我点击按钮完成时,我应该能够为你做以下事情

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

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 的值解析为 int in a1,b1,c1

----那么在else部分我应该可以使用这些值,如果它们通过了上述条件。

else

//do something

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

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

帮助! :)

【问题讨论】:

有很多事情可能出错,日志文件说什么?你有堆栈跟踪吗? 我不确定我是否理解。如果您有无效数据,为什么还要继续处理? 对不起,我的意思是如果它不满足这两个条件,它应该去其他部分。 【参考方案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 
    //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
    

【讨论】:

【参考方案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 ....”,它会告诉你是什么导致你的力关闭。

【讨论】:

该死,我声称我是在 John 发帖时写的! 大声笑.. 只看到你的帖子进行了更正,但不幸的是约翰在你之前发布了它:) 无论如何谢谢男人! :)【参考方案3】:

我认为你只需要做第二个 if an 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

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

【讨论】:

【参考方案4】:

不是 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)
    ......

【讨论】:

【参考方案5】:

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

 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

【讨论】:

以上是关于如何在 if else 循环中对同一数据使用多个条件? - java/安卓的主要内容,如果未能解决你的问题,请参考以下文章

将“for”循环与 if-else 语句相结合,每个“if”语句中都有多个条件

如何在while循环中使用if,else语句从变量中读取一系列值进行计算

第12条:不要在for和while循环后面写else块

在javascript中对一堆if()else if()使用switch语句是不是有任何性能提升? [复制]

if else elseif使用注意点

java中对if的优化