最近在网上看到一道面试题,据说让大部分面试者望而却步(数据仅供参考)。我跃跃欲试,决定分享一个简单算法来解答这个问题。这个题目主要考察应聘者在细节上的把握能力。题目描述如下:
在0到100的闭区间内,依次遍历所有的正整数。如果一个数字能被3整除,就在输出时添加该数字和星号()标记;如果一个数字能被5整除,则在输出时添加该数字和井号()标记;如果一个数字既能被3整除又能被5整除,则在输出时添加该数字和星号()标记。这是一个对细节的考验。那么,让我们看看如何解答这个问题吧。
这个题目考察的内容包括以下几点:
我们需要明确的是正整数。虽然题目从0开始扫描,但请注意,在数学上,我们通常从正整数开始计数。也就是说,应该从数字1开始遍历而非数字0。理解题目中给出的条件也是关键,我们需要优先处理能同时被3和5整除的数字(因为它们更容易被排除),然后考虑能被单一条件整除的数字。最后要注意闭区间的概念。这是有些出题人可能玩弄文字游戏的地方,我们的循环应该是从闭区间的一个端点开始遍历到另一个端点结束,也就是i<=100而非仅仅使用i < 100的条件。接下来是题目的解答代码:
创建一个名为SF的公共类,其中包含主函数main(),以下是该算法的实现:
```java
public class SF {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) { // 从正整数开始遍历到闭区间终点
if (i % 3 == 0 && i % 5 == 0) { // 能同时被3和5整除的数字处理条件
System.out.print(""); // 输出数字和星号()标记的组合字符串
} else if (i % 3 == 0) { // 能被3整除但不能被5整除的数字处理条件
System.out.print(""); // 输出数字和星号()标记的组合字符串
} else if (i % 5 == 0) { // 能被5整除但不能被3整除的数字处理条件
System.out.print(""); // 输出数字和井号()标记的组合字符串
}
} // 循环结束所有数字遍历过程
} // 主函数结束标记
} // 类定义结束标记
``` |