编写一个程序来执行以下任务。 •从命令行获取单个整数参数n。 •打印出从1到n的整数,每行一个,除了3的倍数,打印“ Flim”代替数字,并打印5的倍数,打印“ Flam”代替数字。对于3和的倍数 5,打印“ FlimFlam”。
例如,运行Java示例6 应该产生输出 1个 2 Flim 4 火焰 Flim
class Example {
public static void main (String argv[]) {
if (argv.length != 1)
usage();
int n = 0;
try {
n = Integer.parseInt(argv[0]);
} catch (NumberFormatException e) {
usage();
}
for (int i = 1; i <= n; i++)
if (i % 3 == 0) {
System.out.println("Flim");
} else if (i % 5 == 0) {
System.out.println("Flam");
} else if (i % 3 == 0 && i % 5 == 0){
System.out.println("FlimFlam");
} else {
System.out.println(i);
}
}
private static void usage() {
System.err.println("usage: java Example count string");
System.exit(1);
}
}
答案 0 :(得分:3)
问题出在条件上。由于i % 3
或i % 5
首先满足时,它永远不会达到i % 3 == 0 && i % 5 == 0
的状态。因此,您必须首先检查i % 3 == 0 && i % 5 == 0
,然后检查其余两个条件。
以下为修改条件:
if (i % 3 == 0 && i % 5 == 0){
System.out.println("FlimFlam");
} else if (i % 3 == 0) {
System.out.println("Flim");
} else if (i % 5 == 0) {
System.out.println("Flam");
} else {
System.out.println(i);
}
编辑:-如果if-else-if块与任何第一个出现的条件都匹配,则不要检查if-else-if块中的其余条件。>
答案 1 :(得分:0)
这是完整的代码:
public class Example {
public static void main(String argv[]) {
if (argv.length != 1)
usage();
int n = 0;
try {
n = Integer.parseInt(argv[0]);
} catch (NumberFormatException e) {
usage();
}
for (int i = 1; i <= n; i++)
if (i % 3 == 0) {
if(i % 5 == 0) {
System.out.println("FlimFlam");
}
System.out.println("Flim");
} else if (i % 5 == 0) {
System.out.println("Flam");
} else {
System.out.println(i);
}
}
private static void usage() {
System.err.println("usage: java Example count string");
System.exit(1);
}
}