一直在寻找解决这个问题的解决方案。我刚刚开始编程大约2个星期,而且事实上我并不知道正确的java术语,但这可能是我找不到我想要的东西的原因。
无论如何,程序应该是:
打印出从1到100的所有数字,如果在迭代过程中程序遇到一个可被3整除的数字,它必须用“Crackle”替换该数字,如果它遇到一个可被5整除的数字用“Pop”代替那个数字,它会遇到一个可被两者整除的数字,然后它必须用“CracklePop
替换这个数字我无法打印CracklePop以获得可被3和5分割的数字,但我可以将它打印到Crackle&弹出但不替换数字。
我尝试过使用:
Integer.toString(); ,Integer.valueOf(); ,Integer.parseInt();
我无法开展工作。这是到目前为止的代码:
int counter = 0;
int max = 100;
for (int i = 1; i <= max; i++){
if (counter % 3 == 0) {
System.out.println("Crackle");
}
else if(counter % 5 == 0){
System.out.println("Pop");
}
else if (counter % 3 == 0 && counter % 5 == 0){
System.out.println("CracklePop");
}
System.out.println(counter);
counter++;
}
如果您还可以建议一个解决方案,这将是编写此类程序的最强大的方式,那也很好。
答案 0 :(得分:1)
counter
= 15
您的最后2 else if
将永远不会被调用,您需要重新订购,否则就像
if (counter % 5 == 0 && counter % 3 == 0){
System.out.println("CracklePop");
} else if (counter % 3 == 0) {
System.out.println("Crackle");
} else if(counter % 5 == 0){
System.out.println("Pop");
} else{
System.out.println(counter);
}
仍然可以将%
的结果存储在布尔变量中,以避免在最坏的情况下进行多次计算
答案 1 :(得分:1)
不需要counter
变量。您只需使用i
计数器本身。
此外,你应该检查两者是否可以被3和5整除:
int max = 100;
for (int i = 1; i <= max; i++){
if (i % 3 == 0 && i % 5 == 0){
System.out.println("CracklePop");
} else if (i % 3 == 0) {
System.out.println("Crackle");
} else if(i % 5 == 0){
System.out.println("Pop");
} else {
System.out.println(i);
}
}
最后else
将确保您使用相应的字符串替换该数字,如果它与可被3和/或5整除的条件之一匹配。
答案 2 :(得分:0)
您需要将最后一个else / if语句放在开头。问题是,当你的一个if语句有效时,它将执行该语句并结束if语句。你的最后一句话永远不会被执行。你的陈述应该是:
public class CodeCracklePop {
public static void main(String[] args) {
int counter = 0;
int max = 100;
for (int i = 1; i <= max; i++){
if (counter % 3 == 0 && counter % 5 == 0){
System.out.println("CracklePop");
}
else if (counter % 3 == 0) {
System.out.println("Crackle");
}
else if(counter % 5 == 0){
System.out.println("Pop");
}
System.out.println(counter);
counter++;
}
}
}
答案 3 :(得分:0)
数字未被替换的原因是因为打印了Crackle和Pop,但之后也会打印数字。 CracklePop永远不会被打印,因为任何可以实现它的东西都只会打印Crackle。您需要对逻辑进行重新排序,以使其符合您的需求。
答案 4 :(得分:0)
替换
System.out.println(counter);
使用
else {
System.out.println(counter);
}
此外,正如Jigar上面指出的那样,你应该先测试3和5
答案 5 :(得分:0)
试试这个
public static void main(String [] args){
int max = 100;
for (int i = 0; i < max; i++) {
if (i % 3 == 0 || i % 5 == 0) {
if (i % 3 == 0) {
System.out.print("Crackle");
}
if (i % 5 == 0) {
System.out.print("Pop");
}
} else {
System.out.print(i);
}
System.out.println();
}
}
答案 6 :(得分:0)
public class CodeCracklePop {
public static void main(String[] args) {
/* int counter = 0; omit this*/
int max = 100;
boolean flag = false;
for (int i = 1; i <= max; i++){
if(i % 3 == 0){
System.out.print("Crackle");
flag = true;
}
if(i%5==0){
System.out.print("Pop");
flag = true;
}
if(!flag)
System.out.print(""+i);
flag = false;
System.out.println("");
}
}
}
完成工作的有趣方式。