Java 如何在正整数序列中每5个数字后和第3个数字后再打印一个*号?
我正在打印Java 如何在正整数序列中每5个数字后和第3个数字后再打印一个*号?,java,Java,我正在打印 1,2,3,4,5,*,6,7,8,*,9,10,11,12,13,*,14,15,16,*,17。。。 其中,应在每5个整数之后和第3个整数之后重复打印额外的* 这是我目前的密码 for (int i = 1; i <= 100; i++) { if (i % 5 == 0) { System.out.print("* "); } else { System.out.print(i + " &qu
1,2,3,4,5,*,6,7,8,*,9,10,11,12,13,*,14,15,16,*,17。。。
其中,应在每5个整数之后和第3个整数之后重复打印额外的*
这是我目前的密码
for (int i = 1; i <= 100; i++) {
if (i % 5 == 0) {
System.out.print("* ");
} else {
System.out.print(i + " ");
}
}
我在这里做错了什么?我不能说如何让它显示你想要的,但是它在每5(5,10,15等)处显示
*
的原因是%
是一个“模”操作符,它在除法后得到余数
因此
5%5
确实==0
(因此打印出“*”
),因为除5/5
后没有余数。与10/5
等相同。6%5
将给出1
作为余数。这将给出预期输出:
class Main {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.print(i + " ");
if ((i-5) % 8 == 0 || i % 8 == 0) {
System.out.print("* ");
}
}
}
}
// Output:
// 1 2 3 4 5 * 6 7 8 * 9 10 11 12 13 * 14 15 16 * 17 18 19 20 21 * 22
// 23 24 * 25 26 27 28 29 * 30 31 32 * 33 34 35 36 37 * 38 39 40 * 41
// 42 43 44 45 * 46 47 48 * 49 50 51 52 53 * 54 55 56 * 57 58 59 60 61
// * 62 63 64 * 65 66 67 68 69 * 70 71 72 * 73 74 75 76 77 * 78 79 80
// * 81 82 83 84 85 * 86 87 88 * 89 90 91 92 93 * 94 95 96 * 97 98 99 100
主类{
公共静态void main(字符串[]args){
对于(int i=1;i嘿!你能解释一下预期输出的逻辑是什么吗?它显示(“*”)每个前5个数字,然后是3个数字。但是数字通常是递增的。这基本上是在计算公式。你有5,8,13,16,21等等。因此这些指数位于5,或5+3(8),或5+(8n)的间隔之后因此,如果((i-5)%8==0 | | i%8==0)
,你可以在那里检查,如果是,在打印数字后,在图案中打印一个星号。毕竟,数字总是打印出来的(也应该澄清,它是“5+(8n)”或“8n”,因此在结果条件中是|
)@Frusciante110如果你的问题已经解决,请确保接受答案。OP已经澄清了预期输出背后的逻辑。你应该编辑你的答案以提供解决方案。你到底做了什么?@akuzminykh引用了问题评论部分提到的Rogue的解释更新了答案。