java中的方数

时间:2014-12-20 11:50:13

标签: java

我必须做方法,我给一个数字,如果它是一个方数,它会让我真实的回来 如果不是它会让我误回来, 我写了代码:

public class Aufgabe {

    static boolean x;

    public static boolean istQuadratzahl(int zahl){

        int n = (int) Math.sqrt(zahl);
        if (zahl%n == 0){
             x = true;
        }   
        else { 
           return x=false;
        } 

        return x;
    }

    public static void main(String []args){

        System.out.println(istQuadratzahl(6));
    }
}

但是当我给6或8分时,它给了我真实的回复,我在哪里获胜?

5 个答案:

答案 0 :(得分:2)

在您的情况下,sqrt(6)是2.44948974278。当你把它转换为int时它变成2.当然,6%2 = 0。 尝试使用以下方法检查结果:

if (zahl == n * n){
    x = true;
}

答案 1 :(得分:1)

这样可以解决问题:

public boolean isSquare(double zahl){
    double m=Math.sqrt(zahl);
    double n=(int)Math.sqrt(zahl);
    if(m==n)
        return true;
    else 
        return false;   
}

答案 2 :(得分:0)

 int sqrt = (int) Math.sqrt(inputNumber);

 if(sqrt*sqrt == number) {
    System.out.println(number+" is a perfect square number!");
    return true; 
  }else {
    System.out.println(number+" is NOT a perfect square number!");
    return false; 
  }

答案 3 :(得分:0)

不要使用静态变量。事实上,根本不使用变量。

另外,你的逻辑错了。 (int)Math.sqrt(12) == 312%3 == 0,但12不是正方形。

public static boolean istQuadratzahl(int zahl)
{
    int n = (int) Math.sqrt(zahl);

    if (n*n == zahl)
        return true;    
    else 
        return  false;
}

答案 4 :(得分:0)

将'if'更改为此

if (zahl ==  n * n){