如何在 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语句从变量中读取一系列值进行计算