Я не понимаю, почему для ввода выше 49, например 54, будет для четвертой последней выходной печати (из 10) - PullRequest
0 голосов
/ 10 июля 2020
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 строк или , что неверно, но я надеюсь решить ее позже.

Теперь я столкнулся с ошибкой, и я не знаю, где именно. Когда я ввожу целые числа, которые являются точными квадратами, результаты получаются точными. То же самое и с другими числами. Однако для ввода выше 49, например 54, четвертая последняя строка вывода дает , что меня совершенно озадачивает. Я знаю, что переменная переменная == допустима, из моего чтения других сообщений, но тогда я не понимаю, что не так.

Буду признателен за любые предложения или отзывы!

1 Ответ

0 голосов
/ 13 июля 2020

Проблема в том, что когда вы делите 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");
    }
}
...