• JAVA经典百题之3的倍数


    题目:倒序输出 100 以内所有3的倍数,数据之间以单个空格分割, 每五个数换一行

    ?先写出程序分析,然后再用3种方法实现,每种方法附上解题思路,实现代码及优缺点,最后总结推荐哪种方法更好
    这个问题可以分为以下几个步骤来解决:

    1. 从100开始递减,遍历所有数字。
    2. 对于每个数字,检查它是否是3的倍数。
    3. 如果是3的倍数,将其输出,同时计数器加1。
    4. 每输出5个数字,换行。

    接下来,我将分别展示三种不同的方法来实现这个任务,并列出它们的解题思路、实现代码以及各自的优缺点。

    方法一:使用单层循环

    解题思路:

    使用一个循环从100开始递减到1,检查每个数字是否是3的倍数,如果是,就输出,同时计数器加1。当计数器达到5时,换行。

    实现代码:
    public class Main {
        public static void main(String[] args) {
            int count = 0; // 用于计数
            for (int i = 100; i >= 1; i--) {
                if (i % 3 == 0) {
                    System.out.print(i + " ");
                    count++;
                    if (count == 5) {
                        System.out.println();
                        count = 0;
                    }
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    优点:
    • 简单易懂,代码量少。
    • 只需要单层循环,效率高。
    缺点:
    • 在输出时需要手动控制换行。

    方法二:使用嵌套循环

    解题思路:

    使用两层嵌套循环,外层循环控制数字的范围,内层循环检查每个数字是否是3的倍数。同时使用计数器控制输出和换行。

    实现代码:
    public class Main {
        public static void main(String[] args) {
            int count = 0; // 用于计数
            for (int i = 100; i >= 1; i--) {
                if (i % 3 == 0) {
                    System.out.print(i + " ");
                    count++;
                }
                if (count == 5) {
                    System.out.println();
                    count = 0;
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    优点:
    • 使用了嵌套循环,更灵活,可以适应更复杂的输出要求。
    • 效率仍然较高。
    缺点:
    • 比方法一稍微复杂一些,需要注意循环嵌套的控制。

    方法三:使用条件判断

    解题思路:

    使用单层循环从100开始递减到1,使用条件判断来判断是否是3的倍数并控制输出和换行。

    实现代码:
    public class Main {
        public static void main(String[] args) {
            for (int i = 100; i >= 1; i--) {
                if (i % 3 == 0) {
                    System.out.print(i + " ");
                }
                if (i % 3 == 0 && i % 15 == 0) {
                    System.out.println();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    优点:
    • 简洁明了,代码可读性较高。
    • 只需要单层循环。
    缺点:
    • 使用了多个条件判断,可能稍微影响效率。
    • 在更复杂的输出要求下可能需要修改条件。

    总结与推荐:

    从上面的三种方法中,方法一和方法二都是有效的,但方法一(使用单层循环)可能更易于理解和修改,因此在这种简单情况下,推荐使用方法一。如果需要更复杂的输出要求或逻辑,方法二(使用嵌套循环)可以提供更多的灵活性。方法三(使用条件判断)虽然简洁,但在复杂情况下可能需要增加更多的条件判断,不如方法一和方法二直观。因此,综合考虑,方法一是最好的选择。

  • 相关阅读:
    另类终端「GitHub 热点速览 v.22.15」
    Hbase 面试题(六)
    S-2K2001 pmon调试
    delete删除的文件可以恢复吗?
    数据挖掘——RFM客户价值模型及航空公司客户分析实例
    找不到vcruntime140.dll,无法继续执行代码,vcruntime140.dll怎么修复
    Java 注解
    部署LVS-DR集群+keepalived(主-备)
    29、Nio(seletor为什么要处理完的key要手动清除(remove))
    通用Mapper获取数据表中id为0解决方法。千万别瞎改int为integer了
  • 原文地址:https://blog.csdn.net/2302_79769114/article/details/133742645