В Java, как печатать числа делителя? - PullRequest
0 голосов
/ 30 мая 2020

Я хочу напечатать делители вводимого пользователем значения от 1 до 10000.

import java.util.Scanner;

public class Divisors {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int Range;
        int Divisor;

        while(true) {

            System.out.print("Please insert a number between 1 and 10000: ");
            Range = scan.nextInt();

            if (Range < 1 || Range > 10000)
            System.out.println("Wrong choice");

            else
                break;
        }


        Divisor = 0;    // Start counting Divisor from Zero

        for (int loop = 1; loop <= Range; loop++) {
            if (Range % loop == 0)
                Divisor++;
                System.out.println("loop);      
            }

        System.out.println("Total number of divisors of " + Range + " is " + Divisor);

    }
}

У меня проблема с командой System.out.println ("l oop); . Я хочу напечатать все делители, например, если пользователь ввел 10, тогда на выходе должно появиться что-то вроде:

!

Please insert a number between 1 and 10000: 10
1
2
5
10
Total number of divisors of 10 is 4

! !

Но текущий вывод:

!

Please insert a number between 1 and 10000: 10
1
2
3
4
5
6
7
8
9
10
Total number of divisors of 10 is 4

!!

так как напечатать l oop только когда (Range% l oop == 0) верно ??

Ответы [ 4 ]

2 голосов
/ 30 мая 2020

Вы пропустили {}

for (int loop = 1; loop <= Range; loop++) {
    if (Range % loop == 0) {
       System.out.println(loop); 
       Divisor++;
    }     

}
1 голос
/ 30 мая 2020

Любой условный оператор выполнит следующую строку, если вы не включите фигурные скобки. Если вы хотите выполнить более одного оператора внутри блока if, включите эти операторы в фигурные скобки. Пример:

    If(Condition)
{
Statement1;
Statement2;
}
1 голос
/ 30 мая 2020

Вы пропустили {} в l oop:

for (int loop = 1; loop <= Range; loop++) {
    if (Range % loop == 0) {
       System.out.println("loop); 
       Divisor++;
    }     

}

Когда вы пишете условие if, и у вас есть одна строка кода после того, как оно будет выполнено: (Без {})

 if (Range % loop == 0) 
           System.out.println("loop); //WORK !
           Divisor++; /// NOT WORK !!

Но с {} выполняются две строки:

if (Range % loop == 0) {
           System.out.println("loop); //WORK !
           Divisor++; /// WORK !!
        }
1 голос
/ 30 мая 2020

просто добавьте скобки к условию if, код может быть следующим:

  for (int loop = 1; loop <= Range; loop++) {
            if (Range % loop == 0){
                Divisor++;
                System.out.println("loop); 
               }     
            }
...