打印数字1-100,除非被5或12整除

时间:2017-10-31 19:04:13

标签: java acm-java-libraries

问题是

  

编写一个打印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);
        }
    }
}
}
猜猜我们都错过了什么。

2 个答案:

答案 0 :(得分:3)

不要为特定情况求解,而是编写一个可扩展的解决方案。首先,问题中哪些变量可能会发生变化?我说他们是:

  1. 起始编号1
  2. 最后一个号码100
  3. 除数512
  4. 此外,正如@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)
相关问题