我必须做方法,我给一个数字,如果它是一个方数,它会让我真实的回来 如果不是它会让我误回来, 我写了代码:
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分时,它给了我真实的回复,我在哪里获胜?
答案 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) == 3
,12%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){