【问题标题】:Android studio if statement showing 'Incompatible types' flag [closed]Android studio if 语句显示“不兼容的类型”标志 [关闭]
【发布时间】:2015-12-28 21:04:20
【问题描述】:

我正在 Android Studio 中制作一个非常基本的练习应用程序,用于检查从用户那里获取的数字是否为三角形数字。例如:15。

我遇到的问题是我的if 语句的第一部分在Android Studio IDE 中用Incompatible types. Required boolean. Found int 标记number。 我已经将该方法设置为期望返回一个布尔值,并且确实如此。我不确定为什么会升起这个标志。

public void getInput() {
    EditText usersInput = (EditText) findViewById(R.id.userField);
    int userInputNumber = Integer.parseInt(usersInput.getText().toString());
    System.out.println(userInputNumber);

    Numbers checkTriangular = new Numbers();
    checkTriangular.isTriangularNumber(userInputNumber);
}

class Numbers {
    public boolean isTriangularNumber(int number) {
        number = number*(number+1)/2;
        if (number) {
            return true;
        } else {
            return false;
        }
    }

【问题讨论】:

  • if (number) 可能是您想要更仔细地查看的内容。
  • so ... 需要根据什么条件返回true,什么时候返回false?
  • 太棒了,所以你需要类似的东西: return isTriangularNumber(number); // isTriangularNumber 如果数字是三角形则返回真,否则返回假
  • @RichardC:这与三角数无关,那你需要什么?
  • 那你为什么对 Kristy 说“是”?这几乎不一样。我给了你解决问题所需的一切。

标签: java android boolean


【解决方案1】:

这将测试 number 是否为整数。

public boolean isTriangularNumber(int number) {
    number = number*(number+1)/2;
    if (number % 1 == 0) {
        return true;
    } else {
        return false;
    }
}

【讨论】:

  • 你可能想等到他决定他需要什么。十进制数与没有小数的整数不同
【解决方案2】:
if (number)

要求数字为布尔值。

我假设你正在考虑 C 中的位置

if (number)

的简写
if (number !=0)

java 中不存在这样的简写。

【讨论】:

    【解决方案3】:

    我的数学不是很好,但是,据我了解,如果数字是三角形,则以下将返回 true(假设 number > 0...您可以使用 if (number > 0) 对其进行测试或使用 Math.abs(number) 进行转换正数的任何输入):

    public boolean isTriangularNumber(int number) {
        return (((Math.sqrt((8*number)+1)) % 1) == 0)
    }
    

    【讨论】:

      【解决方案4】:

      这就是我的总体情况。 但最初我所追求的只是 Android Studio 给我Incompatible types. Required boolean. Found int 的原因,对此进行了解释。

      class Numbers {
      
              int number;
      
              public boolean isTriangularNumber(int number) {
                  int x = 1;
                  int triangularNumber = 1;
      
                  while (triangularNumber < number) {
                      x++;
                      triangularNumber = triangularNumber +x;
      
                  }
      
                  if (triangularNumber == number) {
                      return true;
                  } else {
                      return false;
                  }
              }
      

      所有谜团都解开了

      【讨论】:

        猜你喜欢
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 2018-08-25
        • 2014-11-25
        • 2012-09-13
        • 2014-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多