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结束呢
2 年多之前 回复
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)
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java判断完全平方数
判断一个数n是不是完全平方数的方法: static boolean isSqure(int n) { double fsqrt = Math.sqrt(n);//先将数开平方 int m = (int) fsqrt;//转换成整数 return m*m == n;//把开平方后的整数再平方,看看他和开平方之前的数是不是相等 }
如何判断一个数是完全平方数
bool isSqr(int n){    int a = (int)(sqrt(n) + 0.5);  //四舍五入求整,又学到一招     return a * a == n;}bool isSqr(int n) {     int a = (int)(sqrt(n) + 0.0001);     return a * a == n; } bool isSqr(int n) {     int a = (int)sqrt(n * 1.0);     if(a*a == n || (a+1)*(a+1)
java经典问题_完全平方数
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 完全平方:完全平方即用一个整数乘以自己例如1*1,2*2,3*3等等 //因为数字为整数,所以将i的范围限定在Math.sqrt(Integer.MAX_VALUE)内; Math.floor(double param) 该方法是用来求取param最接近的整数(不是采用四舍五
一些简单的java编程题(10) ————判断完全平方数
版权声明:保留个人权利,可转载,请注明出处(http://blog.csdn.net/wlsgdsb)。  如程序有不当之处,敬请指正。/* (程序头部注释开始) 版权声明:保留个人权利,可转载,请注明出处(http://blog.csdn.net/wlsgdsb)。 如程序有不当之处,敬请指正。 * 文件名称: 《一些简单的java编程题(10) ————判断完全平方数》 ...
判断一个数是否是完全平方数
不使用sqrt情况下,有恒等式: 1+3+5+…+(2*n-1) = n^2bool isPerfectSquare(int num) { for(int i=1; num>0; i+=2){ num -= i; } return num == 0; }
如何判断一个整数是不是完全平方数
bool isSqr(int n){    int a = int(sqrt(n) + 0.5);     return a * a == n;}bool isSqr(int n) {     int a = (int)(sqrt(n) + 0.0001);     return a * a == n; } bool isSqr(int n) {     int a = (int)sqrt(n
C语言经典代码(判断完全平方数)
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?  1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后  的结果满足如下条件,即是结果。请看具体分析:  #include "math.h" main() { long int i,x,y,z; for (i=1;i<100000;i+
怎么判断一个数是否为完全平方数
转载地址点击打开链接 在不使用浮点函数sqrt的情况下,我们有一些比较好的算法: 1.利用恒等式: 1+3+5+7+....+(2*n-1)=n^2   bool isSqrt(int n) { for(int i=1;n>0;i+=2) n-=i; return 0 == n; } 下面是一些关于完全平方数的数学性质: 对排除完全平方数有一定的加速作用
判断完全平方数的正确方法
判断完全平方数的正确姿势 我们经常碰到判读一个数是不是完全平方数的问题,这个问题看似非常简单,但写的代码往往是有bug的,容易误导初学者。下面对这个问题给出三种思路,并就其中一种最常用且最容易出问题的思路做深入分析。 要判断一个数是不是完全平方数,至少应该有两种思路,一种是看它开平方以后是不是一个整数;另一种是在一定区间内枚举x,看是否有一个x的平方是n(我们姑且不论具体实现,这应该是两种最开始的想法)。对于第二种思路,更常见于求一定区间内的数字有哪些是完全平方数,枚举的这种做法本身没什么问题。
判断一个数是否为完全平方数
若一个整数a为另一个整数b的平方,则称a为完全平方数,现在输入n个正整数,判断他们中有几个是完全平方数 #include #include void main() { int n ; printf("请输入一个数:") ; scanf("%d", &n) ; if(n == (int)sqrt(n)*(int)sqrt(n)) { printf("是完全平方数!\n")