所以我几天前就开始学习Java了,除了这个令我难以置信的练习外,我做得很好。因此,练习是编写一个程序,显示1到30之间不可分割的所有数字3"。所以这很容易:
class numbers {
public static void main (String args[]) {
for (int i = 0; i <=30; i++){
switch(i % 3){
case 0 :
break;
default :
System.out.println(i);
break;
}
}
}
}
除了其中一个变体说&#34;在检测到可分性后使用break
。现在我不确定上面代码中使用的break
是否正确,因为它是switch
的一部分。我想知道是否还有其他方法可以做到。
答案 0 :(得分:5)
一些修正:
Numbers
,而不是numbers
所以现在你的代码看起来应该简洁明了:)
class Numbers {
public static void main (String args[]) {
for (int i = 1; i <=30; i++){
if(i % 3 == 0){
continue;
}
System.out.println(i);
}
}
}
}
或者你可以使用更短的版本:
for (int i = 1; i <=30; i++){
if(i % 3 != 0){
System.out.println(i);
}
}
答案 1 :(得分:1)
另一个简短的解决方案。
我们知道从1到30只有10个可被3整除的数字,我们制作了10个循环来打印它们。
for (int i = 1; i <= 30; ++i) {
System.out.printf("%d%n%d%n", i++, i++);
}
我们的想法是在可被3整除的数字之前打印两个数字,并跳过可被整除的数字。
i
从1 %d
中的第一个System.out.printf
打印当前i
(i = 1)并将其增加1(i = 2)%d
中的第二个System.out.printf
打印当前i
(i = 2)并将其增加1(i = 3)for-loop
增加i
的结束条件为1(i = 4)i <= 30
为假编辑更易读的版本(由ajb提议)
for (int i = 1; i <= 30; i += 3) {
System.out.printf("%d%n%d%n", i, i + 1);
}
答案 2 :(得分:0)
代码没问题 - 如果i % 3
结果为0,则不打印任何内容。由于只有两种可能性,我会重写为if-statement:
if( ( i % 3 ) != 0 )
{
System.out.println( i );
}
在我看来更具可读性并更清楚地传达意图。
更多关于实际陈述:
switch( i % 3 )
{
case 0:
//do nothing
break; // leave switch - statement
...
}
离开switch语句需要中断。所以是的,这是必要的。