Java 打印数字1-100,可被5或12整除时除外

Java 打印数字1-100,可被5或12整除时除外,java,acm-java-libraries,Java,Acm Java Libraries,问题是 编写一个Java程序,打印从1到100的数字。如果该数字可被5整除,则程序应打印该数字中有多少个5,而不是打印该数字,如果该数字可被12整除,则程序应打印该数字中有多少个12 以下是我目前的尝试: import acm.program.*; public class FiveTwelve extends ConsoleProgram { public void run() { int a = (1); int b = (5); i

问题是

编写一个Java程序,打印从1到100的数字。如果该数字可被5整除,则程序应打印该数字中有多少个5,而不是打印该数字,如果该数字可被12整除,则程序应打印该数字中有多少个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);
            }
        }
    }
}
这样下去。我想删除可被5和12整除的数字。相反,我需要显示结果或num/5&&num/12

更新

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);
        }
    }
}
}
导入acm.program.*;
公共类五维扩展控制台程序{
公开募捐{

对于(int a=1;a这是您打算做的,
println(a)
在所有其他情况下

for (int a = 1; a <= 100; a++) {
    if (a % 5 == 0) {
        println(a / 5);
    } else if (a % 12 == 0) {
        println(a / 12);
    } else {
        println(a);
    }
}

for(int a=1;a这是您打算做的,
println(a)
在所有其他情况下

for (int a = 1; a <= 100; a++) {
    if (a % 5 == 0) {
        println(a / 5);
    } else if (a % 12 == 0) {
        println(a / 12);
    } else {
        println(a);
    }
}

for(int a=1;a让我们编写一个可扩展的解决方案,而不是针对特定情况进行求解。首先,问题中有哪些变量可能会改变?我想说它们是:

  • 起始编号
    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);
                }
            }
        }
    }
    
    导入acm.program.*;
    公共类五维扩展控制台程序{
    私人最终int FIRST=1;
    私人最终int LAST=100;
    私有final int[]除数={5,12};
    公开募捐{
    布尔除数;
    
    对于(int i=FIRST;i而不是针对特定情况求解,让我们编写一个可扩展的解决方案。首先,问题中有哪些变量可以改变?我想说它们是:

  • 起始编号
    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);
                }
            }
        }
    }
    
    导入acm.program.*;
    公共类五维扩展控制台程序{
    私人最终int FIRST=1;
    私人最终int LAST=100;
    私有final int[]除数={5,12};
    公开募捐{
    布尔除数;
    
    对于(int i=FIRST;i Big hint:
    println(a);
    不受任何条件的限制,因此它总是执行。尝试解释应该在哪里执行和不应该在哪里执行。然后尝试这样编码。注意:还要考虑“a”可以被5和12整除的时间。这会被忽略,因为您使用了“else if”不要过于数学化,但会帮助您准确理解@Anoml所说的内容。如果您准备接受挑战,您可以探索甚至尝试验证他们的重要提示:
    println(a);
    不受任何条件的限制,所以它总是会执行。请尝试解释应该在哪里执行,不应该在哪里执行。然后尝试这样编码。注意:还要考虑“a”可以被5和12整除的时间。这会被忽略,因为您使用了“else if”不要太过数学化,但会帮助你准确理解@Anoml所说的。如果你准备迎接挑战,你可以探索甚至尝试证明他们的观点,不要忘记a=60的情况,它可以被5和12整除。@Anoml破坏了运动,但是对的。OP:总是问自己为什么他们在两种条件下建造。@JoopEggen这是一种传统的碳酸饮料uzz问题,你会打印两个条件。感谢你真正实现了我的意图。这是我开始的目的,但正如其他人提到的,有一些例子,如数字60,可以被5和12整除。你的例子应该是我编辑的选择,因为我目前是一个初学者,对以前的答案没有太多的知识。别忘了a=60的情况,它可以被5和12整除。@Anoml破坏了运动,但正确。OP:总是问问自己为什么它们在两个条件下构建。@JoopEggen这是一个传统的fizzbuzz问题,你可以打印两个条件。感谢你真正实现了我的意图。这是我开始的目的,但正如其他人提到的,有一个例子It’你的例子应该是我编辑的选择,因为我目前是初学者,对以前的答案不太了解。