В течение 1 oop функции Println делают l oop циклов навсегда. Почему это происходит? - PullRequest
0 голосов
/ 10 февраля 2020

Я нашел несколько упражнений по программированию, но это не решило. Программа принимает входные данные как целое число, а затем суммирует количество простого числа, которое вы даете. Я знаю, что код неудачен, но пока я пытаюсь отладить его, что-то интересное, если я запускаю прокомментированные функции println, то l oop занимает вечность и никогда не завершается. Может кто-нибудь объяснить, почему?

    static void problem11() {//summing prime numbers
    System.out.println("how many numbers do you want?");
    int aim = scanner.nextInt();
    int count = 0;
    int datum = 2;
    int sum = 0;
    while(count<aim) {
        boolean prime = true;
        for(int i=datum-1; i>=2; i--) {
            **//System.out.println("inside for, datum: " + datum);**
            if(datum%i==0)
                **//System.out.println(datum +" is not a prime number");**
                prime = false;
        }
        if(prime) {
            System.out.println("one prime found");
            count++;
            sum += datum;
        }
        datum++;
    }
    System.out.printf("\nSum of first %d prime numbers is: %d", aim, sum);
}

Спасибо @Andy, @MauricePerry и @Nevexis. Да, я знаю, что должен использовать фигурные скобки, но я пытаюсь сократить свой код для удобства чтения, но, как новичок, я, вероятно, держусь на безопасной полосе.

1 Ответ

0 голосов
/ 10 февраля 2020

Еще одно замечание - если вы буквально раскомментируете 2-й println («это не простое число ...»), это изменит лог c из-за отсутствия скобки в операторе if. - Энди 4 часа go Спасибо за помощь, это ответ.

...