J'essaie d'apprendre Java et je dois créer un petit script qui vous dit si un nombre que vous avez sélectionné est un nombre carré ou non :
public class NumberShapes{
public static void main(String[] args) {
class Number {
int number;
public boolean isSquare(){
int y = 1;
int squareNumber = 1;
while (squareNumber <= number) {
y += 1;
squareNumber = (y * y);
}
if (squareNumber == number) {
return true;
}
else {
return false;
}
}
}
Number myNumber = new Number();
myNumber.number = 9;
System.out.println("Is " + myNumber.number + " a square number?: " + myNumber.isSquare());
}
}
Supposons que vous choisissiez un nombre, dans ce cas-ci myNumber = 9
. La logique est alors supposée prendre chaque entier < 9
et le mettre au carré. Si un nombre est élevé au carré pour être égal à myNumber
alors myNumber
est un nombre carré (et renvoie true
) sinon il ne l'est pas et renvoie false
.
Cependant, lorsque j'essaie avec 9
J'obtiens le résultat suivant false
alors qu'il devrait l'être true
.
Je pense que, d'une manière ou d'une autre, il s'agit d'une quadrature du cercle. 9
mais au lieu de comparer 9
avec 9
Il s'agit de comparer 3
avec 9
et en tant que 3 != 9
il donne comme résultat false
. Est-ce exact ?
Comment le réparer ?
(Pour information, j'ai vu une alternative qui consiste à utiliser la racine carrée du nombre et à vérifier s'il s'agit d'un entier, mais j'aimerais comprendre pourquoi cette méthode ne fonctionne pas).