继续或断裂在三元操作员中无效



我想显示从0到30的5的倍数,但不使用普通逻辑。与三元操作员一起尝试显示结果。

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

输出

      5    10    15    20    25   

我不希望打印任何空间,因此在上述代码中,我尝试使用继续语句以继续进行循环,但没有工作。

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

此代码引发无效的表达式。除了表达特殊说明外,为什么不起作用。请帮助我提供在三元操作员中无能为力的表达。

三元操作员期望(在这种情况下)一个字符串,因此要达到您的需求,您必须在条件为false时打印一个空的String

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

只需使用一个空字符串

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

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

但是,这里的continue是管理程序的控制流的说明,什么也没返回。

在这种情况下,您不需要添加continue语句,因为该流程会自动执行您的期望。而且由于您想避免空间,然后可以做到这一点 -

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

您无法返回关键字!即使这确实有效,您仍然会将其传递到System.out.print中,因此您期望打印一个空格/0长的字符串?

这是等效的:

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

,因为 System.out.print(continue)无效。检查有关条件操作员如何工作的Java教程。

可以将三元运算符视为有条件的分配。在您的情况下,使用continue,您没有分配任何内容(System.out.print()的参数)

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

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

,但我认为使用"如果"是更干净的: if (i%5 == 0) System.out.println("" + i);

最新更新