我不明白为什么对于 49 以上的输入,如 54,倒数第四个输出打印(共 10 个)会有 <perfect square>

I do not get why for an input above 49 like 54 there will be a <perfect square> for the fourth last output printing (out of 10)

import java.util.*;
class FindingBiggestnumber {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("Input positive integer");
        int a = sc.nextInt();
    
        for (int q = 1; q <= 10; q++) {
            int b = a/q;
            if ( b == q) {
                System.out.println("Perfect Square");
            } else {
                System.out.println("Not Perfect Square");
            }
        }
    }
}

您好。我试图指出一个数字是否是整数 1-100 的完美平方。我不允许使用任何数学函数和布尔函数(尚未教授它们)。相反,我们需要使用控件 flows/looping.

来解决这个问题

我知道我的程序会给我 10 行 ,这是错误的,但我希望稍后解决。

现在,我遇到了一个错误问题,我不确定它在哪里。当我输入完美平方的整数时,输出是准确的。这同样适用于其他数字。然而,对于 49 以上的输入,如 54,输出的倒数第四行给出了 ,我对此感到非常困惑。我知道 variable == variable 在我阅读其他帖子时是可以接受的,但后来我不明白出了什么问题。

如有任何建议或反馈,我们将不胜感激!

问题是当你除以 54/7 时结果是 7,在这种情况下 b 也是 7。 您的方式可以改进,但如果您想保持这种方式,您可以添加除法余数等于零检查。

for (int q = 1; q <= 10; q++) {
    int b = a/q;
    if ( b == q && (a%q == 0 )) {
        System.out.println(q + " Perfect Square");
    } else {
        System.out.println(q + " Not Perfect Square");
    }
}