这个用java判断完全平方数,输出yes或者no。⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯求大神不会啊⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
两种方法都是可以的。
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;
}
完整的代码
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;
}
}
很简单,使用Math类sqrt开方,把结果强制转换为int类型,然后将结果计算乘方,判断是否和原来的数相等,相等就是完全平方数。