Java Android studio if语句显示';不兼容类型';旗帜

Java Android studio if语句显示';不兼容类型';旗帜,java,android,boolean,Java,Android,Boolean,我正在Android studio中制作一个非常基本的练习应用程序,用于检查从用户处获取的数字是否为三角形。例:15 我遇到的问题是,我的if语句的第一部分用不兼容的类型标记number。必需的布尔值。在Android Studio IDE中找到int。 我已经将该方法设置为期望返回布尔值,它确实返回了。我不知道这面旗帜升起的确切原因 public void getInput() { EditText usersInput = (EditText) findViewById(R.id.u

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

我遇到的问题是,我的
if
语句的第一部分用
不兼容的类型标记
number
。必需的布尔值。在Android Studio IDE中找到int
。 我已经将该方法设置为期望返回布尔值,它确实返回了。我不知道这面旗帜升起的确切原因

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;
        }
    }

这将测试数字是否为整数

public boolean isTriangularNumber(int number) {
    number = number*(number+1)/2;
    if (number % 1 == 0) {
        return true;
    } else {
        return false;
    }
}
要求数字为布尔值

我猜你在用C思考,在哪里

if (number)
是英语的简写

if (number !=0)

java中不存在这样的速记。

这就是我的总体理解。 但最初我想知道的是为什么Android Studio会给我,
不兼容的类型。必需的布尔值。找到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;
            }
        }
类号{
整数;
公共布尔isTriangularNumber(整数){
int x=1;
int triangularNumber=1;
while(三角形编号<编号){
x++;
三角形编号=三角形编号+x;
}
如果(三角形编号==编号){
返回true;
}否则{
返回false;
}
}

所有的谜团都解开了

我的数学不是很好,但是,我的理解是,如果数字是三角形的,下面的结果将返回真值(假设
number>0
…您可以使用
if(number>0)
或使用
math.abs(number)
将任何输入转换为正数):


if(number)
可能是您希望更仔细地查看的内容。那么……基于哪个条件,它需要返回true,什么时候应该返回false?太棒了,所以您需要这样的内容:return isTriangularNumber(number);//如果数字是三角形,则isTriangularNumber返回true,否则返回truefalse@RichardC:这与三角形数字无关,那么你需要什么呢?那你为什么说“是”对Kristy?那不一样。我给了你所有你需要解决的问题。你可能想等到他决定他需要什么。十进制数和不带小数的整数不同
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;
            }
        }
public boolean isTriangularNumber(int number) {
    return (((Math.sqrt((8*number)+1)) % 1) == 0)
}