我想显示从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()
总是期望可以打印的东西,例如-String
,int
,byte
等。
但是,这里的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);