有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我不明白为什么对于49以上的输入,比如54,在最后的第四次输出打印中会有一个<perfect square>(共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的完美平方。我不允许使用任何数学函数和布尔函数(它们还没有教过)。相反,我们需要使用控制流/循环来解决这个问题

我知道我的课程会给我10行<;非完美正方形>;或<;完美正方形>;,这是错误的,但我希望以后解决它

现在,我面临着一个bug问题,我不知道在哪里。当我输入完全平方的整数时,输出是精确的。其他数字也是如此。然而,对于高于49的输入(如54),输出的最后第四行给出<;完美正方形>;这让我非常困惑。从我阅读的其他帖子来看,我知道variable==variable是可以接受的,但我不明白那是怎么回事

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


共 (1) 个答案

  1. # 1 楼答案

    问题是当你除以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");
        }
    }