1

perfectsquareコードに問題がある

import java.util.*;


public class perfectsquare {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

Scanner s= new Scanner(System.in); 
double number; 

System.out.println("Enter number >");

number= s.nextDouble();

System.out.println(Math.sqrt(number));





    }

}

if、elseを使用すると、9 = 3のsqrtのような完全な平方を返すことができますが、その数の平方根が10進数の場合、たとえば10の平方根は3.122222....です。

4

3 に答える 3

3
if(Math.round(Math.sqrt(number))==Math.sqrt(number)){
  //it is a perfect square
}
于 2013-02-02T02:18:00.920 に答える
2

戻り値のタイプを(ただし、関数を使用するときに使用Objectする数値かどうかを確認する必要があります)に変更するか、falseの代わりに返すことができますinstanceof-1

完全な正方形かどうかを確認するには、次を使用します。

if(Math.sqrt(number) % 1 == 0) {
    return number;
} else {
    return -1;
}
于 2013-02-02T02:17:06.300 に答える
0
import java.util.*;

public class perfectsquare {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s= new Scanner(System.in); 
        double number; 

        System.out.println("Enter number >");

        number= s.nextDouble();
        double sqr= Math.sqrt(number);
        //System.out.println(sqr);
        double num=sqr;
        double x;
        x=num%1;
        x=num-Math.floor(num);
        if(x>0){
            System.out.println("False");
        }
        else{
            System.out.println(sqr);
        }
    }
}

これは機能します。

于 2013-02-02T02:21:57.617 に答える