Я предполагаю, что ваш код содержит следующие операторы:
Scanner userIn = new Scanner(System.in);
//userIn.next() somewhere in your code, which is what you want to test
Вы можете использовать следующий метод (пропуск userIn.next() в качестве аргумента):
public boolean isDouble(String userInput){
if(userInput.contains(".")){
return true;
}
else{
return false;
}
}
Этот код в основном проверяет, содержит ли userInput String десятичную точку, если так, что вход является двойным, это будет ложным, вы также можете добавить предварительные условия, чтобы убедиться, что userInput - это число, а не что-то еще.
EDIT: Как Klitos Kyriacou по праву указал в комментариях, мой ответ изначально не ответить на поставленный вопрос, однако ОП был удовлетворен ... для полноты картины, я буду ответить на вопрос конкретно:
Метод sqrt из статического класса Math возвращает double, поэтому использование вышеприведенного теста не будет работать, так как Math.sqrt (25) вернет 5.0.
Для этого можно просто сравнить округленное значение возвращаемого значения sqrt с фактическим возвращаемым значением метода sqrt.
Вы можете использовать следующий метод (как и в случае выше userIn.next(), будет аргумент метода):
public boolean isPerfectSquare(String userInput){
if(Math.sqrt(Double.parseDouble(userInput)) == Math.round(Math.sqrt(Double.parseDouble(userInput)))){
return true;
}
return false;
}
Вы можете использовать 'Math.round' и сравнить значения; вы можете преобразовать вход в 'int' и сравнить значения; вы можете получить значение 'String' и проверить на' .' – MadProgrammer
Возможный дубликат [Как проверить, является ли double целым числом] (http://stackoverflow.com/questions/9898512/how-to-test-if -a-double-is-an-integer) – Siddhartha
@ Сиддхартха я проверил эту тему, прежде чем я отправил ее. мы не проходили концепцию .floor в классе, поэтому я не знал, как ее реализовать. – Ronald