В цикле for функции Println делают циклы цикла навсегда.

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

    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("
Sum of first %d prime numbers is: %d", aim, sum);
}

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

Всего 1 ответ


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


Есть идеи?

10000