【问题标题】:How to use multiple conditions on the same data in an if else loop? - java/android如何在 if else 循环中对同一数据使用多个条件? - java/安卓
【发布时间】: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 部分?

帮助! :)

【问题讨论】:

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

标签: java if-statement conditional-statements


【解决方案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
        }}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-19
          • 1970-01-01
          • 2020-10-15
          • 2018-05-05
          • 1970-01-01
          • 1970-01-01
          • 2021-01-30
          • 2021-11-13
          相关资源
          最近更新 更多