继续或中断在三元运算符中不起作用

Continue or break did not work in ternary operator

我想显示从 0 到 30 的 5 的倍数,但不使用正常逻辑。尝试使用三元运算符显示结果。

     int i=0;
     while(++i<=30)
     System.out.print(i%5==0?i:" ");

输出

      5    10    15    20    25   

我不想打印任何空格,所以在上面的代码中,我尝试使用 continue 语句来继续循环,但没有成功。

 System.out.print(i%5==0?i:continue);

此代码抛出无效表达式。为什么除了表达式之外的特殊说明不起作用。请帮助我给出在三元运算符中什么都不做的表达式。

三元运算符需要(在这种情况下)一个字符串,因此要满足您的需求,您必须打印一个空 String 如果条件为假:

 System.out.print(i%5==0?i:"");

因为 System.out.print(continue) 无效。检查 java tutorials 条件运算符的工作原理。

三元运算符可以认为是条件赋值。在你的情况下,continue 你没有分配任何东西(给 System.out.print() 的参数)

您可以简单地使用 "" 而不是 " ",您将获得预期的输出

您不能return关键字!即使这确实有效,您仍会将其传递给 System.out.print 那么您是否希望打印 space/0-length 字符串?

这相当于:

System.out.print(i%5 == 0 ? "" + i : "");

只需使用一个空字符串

System.out.print(i%5==0?i:"");

您需要 println() 方法的参数,而不是指令。

但我认为使用 "if" 更简洁: if (i%5 == 0) System.out.println("" + i);

System.out.println() 的问题。因为 System.out.println() 总是期望可以打印的东西,例如 - Stringintbyte

但是这里continue是一个管理程序控制流的语句,returns什么也没有。

在此上下文中,您无需添加 continue 语句,因为流程会自动执行您期望的操作。既然你想避免 space 那么你可以这样做 -

int i=0;
while(++i<=30)
   System.out.print(i%5==0?i : "");