用java怎么判断一个数是否为完全平方数

如题所述

这种是数学问题了,完全平方数 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529…
找一下规律 就是开方可以得到一个int型整数 我有个笨办法
假定要判断的数是 X double d= Math.sqrt(x) (因不确定是否是完全平方,所以可能出现小数 这里用double)得到开放后的结果 ,做一个int 数组 int arr[]={0,1,2,3,4,5,6,7,8,9};
然后呢,我们用 一个for 循环 遍历d分别与arr中的每个元素进行%运算,外层再加一个for循环与每个%运算结果匹配 如果结果为true 那这个数就是完全平方数
!!
数学渣渣的人算起来就很复杂,还很可能让人看不懂,如果一个数学牛B的一两行代码说不定就搞定啦!!
思路出来了 我用代码又敲了一遍,下面代码送上

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int str=sc.nextInt();
int arr[]={0,1,2,3,4,5,6,7,8,9};
double d= Math.sqrt(str);
double ds=0;
j: for( int a:arr){
for(int h=0;h<arr.length;h++){
ds=d%arr[h];

if(ds==a){
System.out.println((int)d);
break j;
}

}
System.out.println("这个数不是");
break j;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-21
//main方法
public static void main(String[] args) {
System.out.println(isSquare(121));
}
//判断是否是完全平方数方法体
public static String isSquare(int num){
//负数不是完全平方数
if(num<0){
return num+"不是完全平方数";
}
//比该数小的数中  有能平方等于该数  说明是完全平方数
for (int i = 0; i < num; i++) {
if(i*i==num){
return num + "是完全平方数";
}
}
return num+"不是完全平方数";
}

第2个回答  2017-04-21
static boolean isSqrt(double num){
String regex = "\\d+.0+";
return(Math.sqrt(num)+"").matches(regex);
}

相似回答