2 luanpaixie262 luanpaixie262 于 2016.03.17 09:08 提问

java判断完全平方数⋯⋯⋯⋯⋯⋯

这个用java判断完全平方数,输出yes或者no。⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯求大神不会啊⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯图片说明

3个回答

u011489205
u011489205   2016.03.17 10:14

两种方法都是可以的。

 public static boolean isSquares(int value) {
        if (value < 0) {
            return false;
        }
        double sqrtValue = Math.sqrt(value * 1.0);
        int sqrtSimiValue = (int) sqrtValue;
        if ((sqrtSimiValue * sqrtSimiValue) == value) {
            return true;
        } else {
            return false;
        }
    }

    public static boolean isSquares2(int value) {
        if (value < 0) {
            return false;
        }

        int item = value / 2;
        for (int index = item; index >= 0; index--) {
            if (index * index == value) {
                return true;
            }
        }
        return false;

    }
luanpaixie262
luanpaixie262 回复SionTiger: 如何当输入-1结束呢
一年多之前 回复
hgq0916
hgq0916   2016.03.21 23:17

很简单,使用Math类sqrt开方,把结果强制转换为int类型,然后将结果计算乘方,判断是否和原来的数相等,相等就是完全平方数。

u011489205
u011489205   2016.03.17 16:25

完整的代码

public class Squares{
 public static void main(String[] args) {

        try {
            boolean first = true;
            int[] inputs = new int[1024];
            int index = 0;
            int value = 0;
            while(true){
                BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
                if(first){
                    System.out.print("请输入一组数,输入-1结束输入:");
                    first = false;
                } else {
                    System.out.print("请输入下一组数,输入-1结束输入:");
                }

                String str = strin.readLine();
                str = str.trim();
                value = Integer.valueOf(str);
                if(value == -1){
                    break;
                }
                inputs[index++] = value;
            }


            for(int i=0; i < index; i++ ){
                System.out.println(isSquares(inputs[i]));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static boolean isSquares(int value) {
        if (value < 0) {
            return false;
        }
        double sqrtValue = Math.sqrt(value * 1.0);
        int sqrtSimiValue = (int) sqrtValue;
        if ((sqrtSimiValue * sqrtSimiValue) == value) {
            return true;
        } else {
            return false;
        }
    }

    public static boolean isSquares2(int value) {
        if (value < 0) {
            return false;
        }

        int item = value / 2;
        for (int index = item; index >= 0; index--) {
            if (index * index == value) {
                return true;
            }
        }
        return false;

    }
}
luanpaixie262
luanpaixie262 回复SionTiger: 我这个现在要怎么改啊![图片说明](http://img.ask.csdn.net/upload/201603/17/1458205665_864231.png)
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!