查找间隔之间的偶数但排除 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
我最近才开始学习 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