查找间隔之间的偶数但排除 Java 中随机数的倍数

Find even numbers between interval but exclude multiples of random number in Java

我最近才开始学习 Java,并做了一些练习。一直在努力解决这个问题:我必须获得 2 个随机数,A 和 B,并且必须打印 1 和 B 之间的所有偶数。我设法完成了这一部分,但随后出现了剩下的问题:如果除数找到 2A,程序必须中断并显示以下消息:“找到 2A 的倍数”。我所能做的就是打印 1 和 B 之间的每个偶数,并排除 2A 的每个倍数,如下所示:

import java.util.Random;

public class JavaExercise {

    public static void main(String[] args) {
        Random random = new Random();
        int A = random.nextInt(9) + 1;
        int B = random.nextInt(99) + 1;
        
        for (int i = 1; i <= B; ++i) {
             if ((i % 2 == 0) && (i % (2*A) != 0)) 
                 System.out.println (i);
             else
                 break;
                
        }

    }

}

但我需要程序在找到 2*A 的倍数时中断,并显示上面的消息。尝试这样做,但得到了一个非常糟糕的输出,多次显示消息而不是一次,:

        for (int i = 1; i <= B; ++i) {
            if (i % 2 == 0)
                 System.out.println (i);
                if (i % (2*A) == 0)
                    break;
                    System.out.println("Multiple of 2A found");
                
        }

谁能帮我找出我哪里出错了?非常感谢!

你的台词顺序错了。

        for (int i = 2; i <= B; i+=2) {
             if( i % (2*A) == 0 )
             {
                 System.out.println( "Multiple of 2A found." );
                 break;
             }
             System.out.println (i);                
        }

也许您可以添加几个打印语句来查看您的逻辑是否有效:

import java.util.Random;

public class JavaExercise {
    public static void main(String[] args) {
        Random random = new Random();
        int A = random.nextInt(9) + 1;
        int B = random.nextInt(99) + 1;
        int A_times_2 = A * 2;
        System.out.printf("A: %d, B: %d, 2A: %d%n", A, B, A_times_2);

        for (int i = 2; i <= B; i += 2) {
            if (i % A_times_2 == 0) {
                System.out.printf("Multiple of 2A found: %d%n", i);
                break;
            }
            System.out.println(i);
        }
    }
}

示例输出:

A: 9, B: 20, 2A: 18
2
4
6
8
10
12
14
16
Multiple of 2A found: 18