如何让这个程序正常运行?

时间:2016-04-23 04:04:20

标签: java if-statement

我想编写一个从用户读取两个整数的java程序, 然后显示从第一个数字到的所有数字 可被5或6整除的第二个数字,但不能同时为两个。该 输出应显示为每行十个数字。这就是我得到的,但它不起作用..有人可以帮忙吗?

public class Testing {
static int num1;
static int num2;
public static void main(String[] args) {

    userInput();
    factorial();

}

public static void userInput() {
    Scanner sc = new Scanner(System.in);

    System.out.println("Enter first number: ");
     num1 = sc.nextInt();

    System.out.println("Enter second number: ");
     num2 = sc.nextInt();
}

public static void factorial() {
    int n;
    int counter = 0;

    for (n = num1; n <= num2; n++) {
        if ((n % 5 == 0 && n % 6 != 0) || (n % 6 == 0 && n % 5 != 0)) {
            System.out.print(n + " ");

            counter = counter++ % 10;
            if (counter == 9) {
                System.out.println();
            }

        }
    }
}
}

如果我输入这些整数:

Enter first number: 
5
Enter second number: 
90

程序显示我想要每行10个..

5 6 10 12 15 18 20 24 25 35 36 40 42 45 48 50 54 55 65 66 70 72 75 78 80 84 85

1 个答案:

答案 0 :(得分:2)

您的问题是您的计数器变量。由于每行只需10个结果,一旦计数器大于或等于9,你应该用Println()打破这一行,然后确保你的计数器设置回0.见下面的代码:

public static void factorial() {
int n;
int counter = 0;

for (n = num1; n <= num2; n++) {
    if ((n % 5 == 0 && n % 6 != 0) || (n % 6 == 0 && n % 5 != 0)) {
        System.out.print(n + " ");

        counter++;
        if (counter >= 9) {
            System.out.println();
            counter = 0;
        }

    }
}