2016-03-17 5 views
0

Я пытаюсь написать оператор if, чтобы проверить, является ли количество чисел, которое пользователь вводит в массив, является идеальным квадратом (4, 9, 25, 36 ...) ,Проверка, является ли длина массива идеальным квадратом

if(array.length != Math.sqrt(array)) 

Я знаю, что это не правильно, и я знаю, что это, вероятно, что-то легко, но я не могу показаться, чтобы получить, как думать о, если заявление, чтобы увидеть, если мой массив это число, которое является идеальным квадрат.

Любая помощь приветствуется, спасибо.

+0

HTTP: // stackoverflow.com/questions/30919111/whats-the-best-way-in-javascript-to-test-if-a-given-parameter-is-a-square-numbe – Pang

+0

если (issquare (массив.l длина)) будет оценивать значение true для длины массива. квадрат. – DisplayName

ответ

2

Попробуйте это:

int root = (int)Math.sqrt(array.length); 
boolean isSquare = root * root == array.length; 

Или

if ((int)Math.sqrt(array.length) == Math.sqrt(array.length)) 

Есть и другие способы тоже, но все они будут использовать тот факт, что квадратный корень должен быть целым числом.

+0

У вас, похоже, есть опечатка в проверке равенства. –

+0

@theo совершенно так. Спасибо, что подобрали его (исправлено сейчас) – Bohemian

0

Есть подобные ответы на другие языки, но этот алгоритм должен работать с тем, что вы делаете:

bool IsPerfectSquare(long input) 
{ 
    long SquareRoot = (long) Math.Sqrt(input); 
    return ((SquareRoot * SquareRoot) == input); 
} 

видеть эту ссылку для получения дополнительной информации:

What's a good algorithm to determine if an input is a perfect square?

+0

Это еще один отличный способ сделать это: http://stackoverflow.com/questions/12862637/perfect-square-or-not – brw59