gpt4 book ai didi

java - 标记平方数的代码不起作用,这是为什么?

转载 作者:行者123 更新时间:2023-12-04 09:45:41 25 4
gpt4 key购买 nike

我正在尝试学习 Java 并且必须创建一个小脚本来告诉您您选择的数字是否为平方数:

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());

}
}

假设您选择了一个数字,在本例中为 myNumber = 9 .然后该逻辑应该采用每个整数 < 9并将其平方。如果任何数的平方等于 myNumber ,然后 myNumber是一个平方数(并返回 true )否则它不是并返回 false .

但是,当我尝试使用 9 时,我得到的输出是 false ,什么时候应该是 true .

我的想法是它以某种方式将数字平方到 9 ,但不是比较 99 ,比较 39 ,以及 3 != 9 ,它输出为 false .这样对吗?

我将如何修复它?

(仅供引用,我已经看到了一种替代方法,您可以在其中对数字进行平方根并检查它是否为整数,但我想弄清楚为什么这种方式不起作用)。

最佳答案

问题出在您的循环条件中:

while (squareNumber <= number) {
y += 1;
squareNumber = (y * y);
}

y到达 3 , 和 squareNumber变成 9 (3 * 3),你没有退出循环,因为 9 <= 9是真的。因此,在循环的下一次迭代中,将 4 * 4 分配给 squareNumber在结束循环之前,你返回 false .

将条件更改为 while (squareNumber < number) .

关于java - 标记平方数的代码不起作用,这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62128632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com