2015-10-21 4 views
1

Я пишу программу, которая распознает, является ли число идеальным квадратом. Очевидно, что факторы идеального квадрата должны быть целыми. Поэтому мне было интересно узнать, какой был бы лучший способ узнать, является ли sqrt пользовательского ввода (через Scanner) - integer или double.Как проверить, является ли вход пользователя двойным или целым?

благодарит заранее.

+2

Вы можете использовать 'Math.round' и сравнить значения; вы можете преобразовать вход в 'int' и сравнить значения; вы можете получить значение 'String' и проверить на' .' – MadProgrammer

+2

Возможный дубликат [Как проверить, является ли double целым числом] (http://stackoverflow.com/questions/9898512/how-to-test-if -a-double-is-an-integer) – Siddhartha

+0

@ Сиддхартха я проверил эту тему, прежде чем я отправил ее. мы не проходили концепцию .floor в классе, поэтому я не знал, как ее реализовать. – Ronald

ответ

0

Я предполагаю, что ваш код содержит следующие операторы:

 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; 
    } 
+0

cheers mate это решило мою проблему! – Ronald

+2

Это не то, что задал вопрос. Это был квадратный корень пользовательского ввода - целое число, а не сам ввод пользователя. –

+0

@KlitosKyriacou спасибо, сэр, я внес соответствующие изменения – RamanSB

0

Вычислить квадратный корень и сравнить его с собой преобразованный в целое число или результат Math.floor(), если числа могут быть большими.

Смежные вопросы