问题是
编写一个打印1到100之间数字的Java程序。如果数字可以被5整除,而不是打印数字,那么你的程序应该打印这个数字中有多少五个,如果这个数字可以被12整除它应该打印这个数字中有多少人。
这是我目前的尝试:
import acm.program.*;
public class FiveTwelve extends ConsoleProgram {
public void run() {
int a = (1);
int b = (5);
int c = (12);
for (a = 1; a <= 100; a++) {
println(a);
if ((a % 5) == 0) {
println(a/b);
} else if ((a % 12) == 0) {
println(a / c);
}
}
}
}
问题是我的代码也打印了可分割的数字,而不仅仅是结果。示例输出:
1
2
3
4
5
1
6
7
8
9
10
2
11
12
1
这种情况继续下去。我想删除可被5和12整除的数字。相反,我需要显示结果或num / 5&amp;&amp; NUM / 12。
UPDATE !!!
import acm.program.*;
public class FiveTwelve Extends ConsoleProgram{
public void run() {
for (int a = 1; a <= 100; a++) {
if (a % 5 == 0 && a % 12 == 0) {
println(a / 5);
println(a / 12);
} else if (a % 5 == 0) {
println(a / 5);
} else if (a % 12 == 0) {
println(a / 12);
} else {
println(a);
}
}
}
}
猜猜我们都错过了什么。
答案 0 :(得分:3)
不要为特定情况求解,而是编写一个可扩展的解决方案。首先,问题中哪些变量可能会发生变化?我说他们是:
1
100
5
和12
此外,正如@Anoml指出的那样,问题措辞表明,如果你的数字可以被多个除数整除,我们应该打印出每个适用除数可以被整除的次数。而且,正如您在问题中所指出的那样,我们只想在任何除数不能被整除时打印数字。
因此,我们的解决方案变为:
import acm.program.*;
public class FiveTwelve extends ConsoleProgram {
private final int FIRST = 1;
private final int LAST = 100;
private final int[] DIVISORS = { 5, 12 };
public void run() {
boolean hasDivisor;
for (int i = FIRST; i <= LAST; i++) {
hasDivisor = false;
for (int divisor : DIVISORS) {
if (i % divisor == 0) {
println(i / divisor);
hasDivisor = true;
}
}
if (!hasDivisor) {
println(i);
}
}
}
}
这样,我们可以更改我们的起始号码,最后号码或我们支持的除数,程序仍会通过。
答案 1 :(得分:1)
这是你打算做的,SELECT p.*
FROM unitphotos p
INNER JOIN unitTypes u
ON u.UnitTypeID = p.UnitTypeID
AND u.PropertyID = 1
WHERE p.MarketingFileTypeID = 2
在所有其他情况下。
println(a)