博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】Java学习笔记006 - 流程控制
阅读量:7281 次
发布时间:2019-06-30

本文共 11489 字,大约阅读时间需要 38 分钟。

1 package cn.temptation; 2  3 public class Sample01 { 4     public static void main(String[] args) { 5         // 需求:写一万次"我错了!" 6          7         // 方式1、使用CV大法 8         System.out.println("我错了!"); 9         System.out.println("我错了!");10         System.out.println("我错了!");11         System.out.println("我错了!");12         // ...13         14         // 方式2、机械的重复的动作,很傻,考虑让计算机去做,引入了循环的概念15         // 循环怎么理解?16         // 循:按照一定的规律17         // 环:闭合的圆,重复的18         19         // 循环的形式:20         /*21          * 1、while循环22          * 2、do...while循环23          * 3、for循环24          */25     }26 }
1 package cn.temptation; 2  3 public class Sample02 { 4     public static void main(String[] args) { 5         // while循环(当型循环) 6          7         /* 8          * while(条件) { ... } 9          * 当条件满足时,一直做某事,直到条件不满足为止10          * 11          * while结构中的 { ... } 包含的内容称为循环体12          */13         14         // 需求:打印显示"我错了!"这句话3遍15         // 定义次数变量16         int count = 0;17         18         while (count < 3) {19             // 做打印显示的事情20             System.out.println("我错了!");21             22             // 对次数进行统计(即做了一次打印显示,就让次数加1)23 //            count = count + 1;24 //            count += 1;25 //            count++;26             ++count;27             28             System.out.println("当前为第" + count + "次");29         }30     }31 }
1 package cn.temptation; 2  3 public class Sample03 { 4     public static void main(String[] args) { 5         // 需求:使用while循环输出10以内的奇数:1、3、5、7、9 6         int i = 1; 7          8         // 写法1、考虑连续的奇数之间的间隔为2 9 //        while (i < 10) {10 //            System.out.println(i);11             i = i + 2;12             i += 2;13 //            14 //            // Invalid argument to operation ++/--15             i++++;16             (i++)++;17 //            18 //            // 非要使用自增19 //            i++;20 //            i++;21 //        }22         23         // 写法2、考虑在while循环中使用自增,但是只对那些和2求余数为1的数字才显示出来24         while (i < 10) {25             // 结合选择结构26             // 判断是否为和2求余数为1的数字27             if (i % 2 == 1) {28                 System.out.println(i);29             }30             31             i++;32         }33     }34 }
1 package cn.temptation; 2  3 public class Sample04 { 4     public static void main(String[] args) { 5         // 需求:计算从1+2+3+...+100的和 6         int i = 1; 7         int result = 0; 8          9         // 分步来看1+2+3+...+100这个加法算式10 //        result += 1;11 //        result += 2;12 //        // ...13 //        result += 100;14         15         // 因为有一定的规律,且重复的在操作,所以考虑使用循环16         while (i <= 100) {17             System.out.println(i);18             19             result += i;20             21             // i每次加法操作后都要做一下自增22             i++;23         }24         25         System.out.println("1+2+3+...+100的总和为:" + result);26     }27 }
1 package cn.temptation; 2  3 public class Sample05 { 4     public static void main(String[] args) { 5         // 需求:世界最高峰珠穆朗玛峰有8848米,现在有一张很大很大的纸,纸的厚度为0.001米,折叠多少次后可以超过珠峰的高度? 6          7         // 思路:纸每次折叠,厚度都会是上一次厚度的2倍 8          9         // 纸的初始厚度10         int height = 1;11         // 折叠次数12         int count = 0;13         14         while (height <= 8848000) {15             // 纸每次折叠,厚度都会是上一次厚度的2倍16             height = height * 2;17             18             // 折叠一次,折叠次数加119             count++;20         }21         22         System.out.println("折叠了" + count + "次后,就会超过珠峰的高度");23     }24 }
1 package cn.temptation; 2  3 public class Sample06 { 4     public static void main(String[] args) { 5         // 需求:存折中现在有1000块钱,银行的年利息为3.5%,问在银行里放多少年后,连本带利能翻倍? 6          7         // 定义存折的金额 8         double cash = 1000.00; 9         // 定义目标金额10         double total = cash * 2;11         // 定义年数12         int year = 0;13         14         while (cash < total) {15             // 本金和利息记为后一年的本金16             cash = (1 + 0.035) * cash;17             18             year++;19         }20         21         System.out.println("在银行里放" + year + "年后,连本带利能翻倍");22     }23 }
1 package cn.temptation; 2  3 public class Sample07 { 4     public static void main(String[] args) { 5         // while循环的要点:条件放上头,控制里面走 6         int i = 1; 7          8         while (i < 5) { 9             i++;        // 显示:2、3、4、510             System.out.println(i);11 //            i++;        // 显示:1、2、3、412         }13         14         // 循环编写时,特别要注意循(按照一定的规律)的规律的归纳总结,这是写好循环的关键15     }16 }
1 package cn.temptation; 2  3 public class Sample08 { 4     public static void main(String[] args) { 5         // 需求:统计100 ~ 999之间的水仙花数并计算有多少个? 6  7         // 规则:以三位数字为例,数字的值 = (百位上的数字 * 百位上的数字 * 百位上的数字) 8         //                                    + (十位上的数字 * 十位上的数字 * 十位上的数字) 9         //                                    + (个位上的数字 * 个位上的数字 * 个位上的数字),则称为是一个水仙花数10         // 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 311         12         // 定义数字变量并赋值13         int number = 100;14         // 定义统计个数用的变量15         int count = 0;16         17         while (number <= 999) {18             // 关键点:如何获取百位上的数字、十位上的数字、个位上的数字?19             // 个位上的数字20             int i = number / 1 % 10;21             // 十位上的数字22             int j = number / 10 % 10;23             // 百位上的数字24             int k = number / 100 % 10;25             26             // 根据上面的分析,得到通用的公式,注意求余的10表示的是十进制的含义27             28             // 规则:以三位数字为例,数字的值 = (百位上的数字 * 百位上的数字 * 百位上的数字)29             //                                    + (十位上的数字 * 十位上的数字 * 十位上的数字)30             //                                    + (个位上的数字 * 个位上的数字 * 个位上的数字),则称为是一个水仙花数31             // 结合选择结构进行判定32             if (number == i * i * i + j * j * j + k * k *k) {33                 System.out.println(number);34                 // 统计用的变量需要自增35                 count++;36             }37             38             // 统计的范围从100~999,所以数字需要自增39             number++;40         }41         42         System.out.println("【100~999】之间的水仙花数有:" + count + "个");43     }44 }
1 package cn.temptation; 2  3 public class Sample09 { 4     public static void main(String[] args) { 5         // 需求:大蜀山上有一段台阶,级数不知道,但是知道如果两个台阶一起跨,还剩1个台阶; 6         //        如果三个台阶一起跨,还剩2个台阶;如果四个台阶一起跨,还剩3个台阶; 7         //        如果五个台阶一起跨,还剩4个台阶;如果六个台阶一起跨,还剩5个台阶; 8         //        如果七个台阶一起跨,一个台阶都不剩。 9         //        问:这段台阶最少有多少级?10         11         // 定义台阶变量12         int step = 1;13         14         // 思路:运用穷举思想,一个数字一个数字的来尝试是否满足规则15         16         // 写法1、当台阶数不满足规则的,需要做自增;当找到第1个满足规则的台阶数时,就是最少的满足规则的台阶级数,不用自增了17 //        while (!((step % 2 == 1) && (step % 3 == 2) && (step % 4 == 3) && (step % 5 == 4) && (step % 6 == 5) && (step % 7 == 0))) {18 //            step++;19 //        }20 //        21 //        System.out.println("这段台阶最少有" + step + "级");22         23         // 写法2、构造一个死循环,不断的做自增,在循环体中判断是否满足规则,当找到第1个满足规则的数字时,终止循环跳出24         // while死循环的结构25 //        while (true) {26 //            System.out.println("死循环了么?");27 //        }28         29         boolean flag = true;30         while (flag) {31             // 对台阶级数进行规则判断32             if ((step % 2 == 1) && (step % 3 == 2) && (step % 4 == 3) && (step % 5 == 4) && (step % 6 == 5) && (step % 7 == 0)) {33                 System.out.println("这段台阶最少有" + step + "级");34                 flag = false;35             }36             37             step++;38         }39     }40 }
1 package cn.temptation; 2  3 public class Sample10 { 4     public static void main(String[] args) { 5         // 需求:百钱百鸡问题:母鸡一只5元,公鸡一只3元,小鸡三只1元,有100元,如何买到100只鸡?母鸡多少只?公鸡多少只?小鸡多少只?(母鸡、公鸡、小鸡都有) 6          7         // 思路: 8         // 从需求中得到一些等式 9         // 母鸡数量 + 公鸡数量 + 小鸡数量 = 10010         // 母鸡单价 * 母鸡数量 + 公鸡单价 * 公鸡数量 + 小鸡单价 * 小鸡数量 = 10011         // 小鸡数量是3的倍数12         13         // 运用"穷举法"14         // 如果买1只母鸡,再买1只公鸡,还能买多少只小鸡15         // 如果买1只母鸡,再买2只公鸡,还能买多少只小鸡16         // ...17         // 如果买2只母鸡,再买1只公鸡,还能买多少只小鸡18         // 如果买2只母鸡,再买2只公鸡,还能买多少只小鸡19         // ...20         21         // 母鸡数量22         int i = 0;23         // 公鸡数量24         int j = 0;25         // 小鸡数量26         int k = 0;27         28         System.out.println("计算百钱百鸡问题的结果:");29         30         // while循环的嵌套31         // 注意:使用while循环的嵌套时,格外要注意内层while循环的循环条件;同时也要考虑到while循环的执行效率32 33         // 下句语句其实效率不高,可以改进34 //        while (i < 100) {    // 统计买母鸡的只数35         while (i < 20) {    // 统计买母鸡的只数36             // 注意:必须在后一次的内层循环之前,把变量j的值重新赋值一下,否则这个变量j的值还是上一次内层循环结束时得到的那个值37             j = 0;38             39             // 下句语句其实效率不高,可以改进40 //            while (j < 100) {    // 统计买公鸡的只数41             while (j < 33) {    // 统计买公鸡的只数42                 // 可以根据母鸡数量 和 公鸡数量 就可以得到小鸡数量43                 k = 100 - i - j;44                 45                 // 根据思路分析中列出的等式46                 if ((5 * i + 3 * j + k / 3 == 100) && (k % 3 == 0) && (i != 0) && (j != 0) && (k != 0)) {47                     System.out.println("母鸡为:" + i + "只,公鸡为:" + j + "只,小鸡为:" + k + "只");48                 }49                 50                 j++;51             }52             i++;53         }54         55     }56 }
1 package cn.temptation; 2  3 public class Sample11 { 4     public static void main(String[] args) { 5         // do...while循环(直到型循环) 6         // 格式: 7 //        do { 8 //            System.out.println("直到型循环"); 9 //        } while (condition);10         11         int i = 1;12         13 //        do {14 //            System.out.println(i);15 //            i++;16 //        } while (i < 4);17         18         // while循环 和 do...while循环的区别:19         // 1、可以设置断点,结合调试分析20         //        while循环的条件写在最上面,一上来就先判断条件是否满足,满足了才会进入循环体执行语句21         //        do...while循环的条件写在最后,一上来就先进入循环体并执行循环体中的语句,再判断循环条件是否满足,满足的话继续循环22         //    注意:do...while循环在相同的条件(condition)不成立的情况下会比while循环多执行一次23         // 2、while结构就是一个语句块;do...while结构后必须要有一个分号,否则就产生语法错误24         25         // do...while循环在相同的条件(condition)成立的情况下和while循环的执行次数相同26         while (i < 3) {27             System.out.println(i);28             i++;29         }30         31         do {32             System.out.println(i);33             i++;34         } while (i < 3);35         36         // do...while循环在相同的条件(condition)不成立的情况下会比while循环多执行一次37         while (i < 1) {38             System.out.println(i);39             i++;40         }41         42         do {43             System.out.println(i);44             i++;45         } while (i < 1);46     }47 }
1 package cn.temptation; 2  3 public class Sample12 { 4     public static void main(String[] args) { 5         // 需求:使用do...while循环输出1~100之间的数字 6         // 需求:使用do...while循环计算1+2+...+100和 7         int i = 1; 8          9         do {10             System.out.println(i);11             i++;12         } while (i <= 100);13         14         // 因为此时i == 101,所以需要把i进行重置15         i = 1;16         int sum = 0;17         18         do {19             sum += i;20             i++;21         } while (i <= 100);22         23         System.out.println("1+2+...+100=" + sum);24     }25 }
1 package cn.temptation; 2  3 public class Sample13 { 4     public static void main(String[] args) { 5         // 需求:使用do...while循环列出1~100之间所有的奇数 6         int i = 1; 7          8         // 写法1、奇数的间隔为2 9 //        do {10 //            System.out.println(i);11 //            i += 2;12 //        } while (i <= 100);13         14         // 写法2、奇数是和2求余数为1的数字15         do {16             if (i % 2 == 1) {17                 System.out.println(i);18             }19             20             i++;21         } while (i <= 100);22     }23 }

 

转载于:https://www.cnblogs.com/iflytek/p/6443784.html

你可能感兴趣的文章
activiti入门
查看>>
Java——Ajax+Tomcat完成异步请求
查看>>
乱·语
查看>>
回头再说 001
查看>>
Winform开发框架中的内容及文档管理模块功能介绍
查看>>
【强化学习炼金术】李飞飞高徒带你一文读懂RL来龙去脉
查看>>
[Erlang 0098] net_kernel与节点互连,断开,监控
查看>>
stm32 加入 USE_STDPERIPH_DRIVER、STM32F10X_HD的原因
查看>>
利用GDAL进行工具开源化改造
查看>>
第一个ASP.NET
查看>>
2.2. mysqldump - a database backup program
查看>>
01-老马jQuery教程-jQuery入口函数及选择器
查看>>
分割工具——按字段属性
查看>>
c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用
查看>>
第 2 章 Spring Boot
查看>>
搭建Java环境JDK,和运行环境JRE
查看>>
Thinking in Java 4 : 一切都是对象
查看>>
iOS - UICollectionViewController
查看>>
Facebook 宕机事故系服务器配置问题导致
查看>>
【RAC】11g R2 RAC新特性之Highly Available IP(HAIP)
查看>>