Java——第三章(流程控制语句)项目案例
2016-10-24 19:20
417 查看
不多说,直接上干货,搞起!这些题你做完,流程控制基本上就可以自己解决百分之90以上的题了。
1.马宁考试,得了一等奖奖励一个macbook,二等奖奖励ssd固态硬盘,三等奖奖励一个u盘,其他名次为挨
揍!(哈哈)
代码:
用switch语句改写:
这两种效果是等同的,不过等值判断时,switch-case语句执行效率要高于if语句。
2.键盘输入考试成绩,小于60为不及格,60~70为及格,70~80是良好,80~90是优秀,90~100是牛掰,100为
满分。请输入对应成绩的等级。
想一想,能不能用switch语句改一下呢? 很多人说不行,因为不是等值判断,其实是可以的,只需要稍加修
改。
这样就可以达到目的了。。。
3.编写一个简易计算器,实现基本+、-、*、/、%运算。
***做循环题套路:找到循环次数,找到循环操作,若操作是变化的,找到变化与操作次数之间的关系。***
4.打印图形,第一行2个空格,第二行一个,第三行0个。
*******
*******
*******
分析: 循环次数: 三行, 所以3次。
循环操作: 打印空格,打印7个*,换行。(又涉及到循环。)(!找到与循环次数的关系!)空格个数与次
数关系 是3 - 次数。
5.打印图形 依旧最后一行前面没空格。
*
***
*****
*******
(图形不好打,是对称的)
分析: 循环次数:4次
循环操作:打印空格,打印*,换行。(!找到与循环次数的关系!)每一行的空格数为 4 - 循环次数。*个数
为次数的2倍-1。
再来一个boss级别的图形题!
6.打印一个“王"字。(有难度啊!)
************
************
***
***
***
************
************
***
***
***
************
************
分析: 循环次数: 12次
循环操作: 第1,2,6,7,11,12行打印12个*,换行,第3,4,5,8,9,10,行为空格,*号还有换行。提示:本题
用到了标志位算法。
7.猴子吃桃问题,有一堆桃,每天吃剩余的一半还要多吃一个,结果第十天醒来一看,还剩下1个桃,求没有吃
之前有几个桃。
本题采用逆向思维要比之前的思维更简单,并不是所有循环都要用之前的套路,若循环操作前后有联系,找到
他们之间存在的关系有时候比第一种更为简便。(逆向思维)
8.1*2*3*4....*9*11*12*13..*n 当sum>2^25时, 输出sum的值。要求:用while语句操作。注意: 中间没有10的参与。
终于打完了, 以上项目案例如果多练习几遍,难度大的循环就掌握了。。。
你们的支持就是我的动力。。。大家一起加油!程序猿是敲出来的 ,不是看几遍就可以的。。。。
1.马宁考试,得了一等奖奖励一个macbook,二等奖奖励ssd固态硬盘,三等奖奖励一个u盘,其他名次为挨
揍!(哈哈)
代码:
import java.util.Scanner; public class Demo { public static void main(String[] args) { //创建scanner对象sc,键盘输入名次用i接收。 Scanner sc = new Scanner(System.in); System.out.print("马宁荣获几等奖?"); int i = sc.nextInt(); if(i == 1) { System.out.println("奖励一个macbook"); } else if(i == 2) { System.out.println("奖励一个固态硬盘"); } else if(i == 3){ System.out.println("奖励一个u盘"); } else{ System.out.println("挨揍"); } } }
用switch语句改写:
import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("马宁荣获几等奖?"); int i = sc.nextInt(); switch (i) {// jdk 1.8版本以上可以使用字符串 case 1: System.out.println("macbook"); break; case 2: System.out.println("固态硬盘"); break; case 3: System.out.println("u盘"); break; default: System.out.println("挨揍"); } } }
这两种效果是等同的,不过等值判断时,switch-case语句执行效率要高于if语句。
2.键盘输入考试成绩,小于60为不及格,60~70为及格,70~80是良好,80~90是优秀,90~100是牛掰,100为
满分。请输入对应成绩的等级。
import java.util.Scanner; public class Demo02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入考试成绩:"); int chengji = sc.nextInt(); if (chengji < 60) { System.out.println("成绩不及格!"); } else if(chengji < 70) { System.out.println("成绩及格!"); } else if(chengji <80) { System.out.println("成绩良好!"); } else if (chengji <90) { System.out.println("成绩优秀"); } else if (chengji <100) { System.out.println("成绩牛掰!"); } else { System.out.println("成绩满分!"); } } }
想一想,能不能用switch语句改一下呢? 很多人说不行,因为不是等值判断,其实是可以的,只需要稍加修
改。
import java.util.Scanner; public class Demo03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入考试成绩:"); int chengji = sc.nextInt(); switch (chengji / 10) { case 6: System.out.println("成绩及格!"); break; case 7: System.out.println("成绩良好!"); break; case 8: System.out.println("成绩优秀!"); break; case 9: System.out.println("成绩牛掰!"); break; case 10: System.out.println("成绩满分!"); break; default:System.out.println("成绩不合格!"); } } }
这样就可以达到目的了。。。
3.编写一个简易计算器,实现基本+、-、*、/、%运算。
import java.util.Scanner; public class Demo04 { public static void main(String[] args) { // TODO Auto-generated method stub menu(); play(); } public static void menu() { System.out.println("**********欢迎使用计算器**********"); System.out.println("1.加法运算"); System.out.println("2.减法运算"); System.out.println("3.乘法运算"); System.out.println("4.除法运算"); System.out.println("5.取余运算"); System.out.println("6.退出"); System.out.println("*******************************"); } public static void play() { int i = 0; double a = 0.0; double b = 0.0; Scanner sc = new Scanner(System.in); System.out.println("输入您要进行的操作:"); i = sc.nextInt(); while (true) { switch (i) { case 1: System.out.println("输入两个数进行加法"); a = sc.nextDouble(); b = sc.nextDouble(); System.out.println("计算结果为:" + (a + b)); break; case 2: 4000 System.out.println("输入两个数进行减法"); a = sc.nextDouble(); b = sc.nextDouble(); System.out.println("计算结果为:" + (a - b)); break; case 3: System.out.println("输入两个数进行乘法"); a = sc.nextDouble(); b = sc.nextDouble(); System.out.println("计算结果为:" + (a * b)); break; case 4: System.out.println("输入两个数进行除法"); a = sc.nextDouble(); b = sc.nextDouble(); System.out.println("计算结果为:" + (a / b)); break; case 5: System.out.println("输入两个数进行取余"); a = sc.nextDouble(); b = sc.nextDouble(); System.out.println("计算结果为:" + (a % b)); break; case 6: System.out.println("*********谢谢使用!*********"); default: System.out.println("输入有误!"); } menu(); play(); } } }
***做循环题套路:找到循环次数,找到循环操作,若操作是变化的,找到变化与操作次数之间的关系。***
4.打印图形,第一行2个空格,第二行一个,第三行0个。
*******
*******
*******
分析: 循环次数: 三行, 所以3次。
循环操作: 打印空格,打印7个*,换行。(又涉及到循环。)(!找到与循环次数的关系!)空格个数与次
数关系 是3 - 次数。
public class Demo09 { public static void main(String[] args) { // TODO Auto-generated method stub for(int cishu = 1;cishu<=3;cishu++) { int geshu = 3-cishu; for(int cishu_1 = 1;cishu_1<=geshu;cishu_1++) { System.out.print(" "); } for(int cishu1 = 1;cishu1 <=7;cishu1++) { System.out.print("*"); } System.out.println(); } } }
5.打印图形 依旧最后一行前面没空格。
*
***
*****
*******
(图形不好打,是对称的)
分析: 循环次数:4次
循环操作:打印空格,打印*,换行。(!找到与循环次数的关系!)每一行的空格数为 4 - 循环次数。*个数
为次数的2倍-1。
public class Demo10 { public static void main(String[] args) { // TODO Auto-generated method stub for (int cishu = 1; cishu <= 4; cishu++) { // 1.打印空格 int geshu = 4 - cishu; for (int cishu_1 = 1; cishu_1 <= geshu; cishu_1++) { System.out.print(" "); } // 2.打印* int geshu_1 = 2 * cishu - 1; for (int cishu1 = 1; cishu1 <= geshu_1; cishu1++) { System.out.print("*"); } // 3.换行 System.out.println(); } } }
再来一个boss级别的图形题!
6.打印一个“王"字。(有难度啊!)
************
************
***
***
***
************
************
***
***
***
************
************
分析: 循环次数: 12次
循环操作: 第1,2,6,7,11,12行打印12个*,换行,第3,4,5,8,9,10,行为空格,*号还有换行。提示:本题
用到了标志位算法。
public class Demo11 { public static void main(String[] args) { // TODO Auto-generated method stub int t = 0; boolean bo = true; for(int cishu = 1;cishu<=12;cishu++) { if(cishu == 1+5*t || cishu==2+5*t) { //情况1 for(int i =1;i<=12;i++) { System.out.print("*"); } System.out.println(); bo =true; } else { if(bo) { t++; bo=!bo; } //情况2 for(int j=1;j<=4;j++) { System.out.print(" "); } for(int i=1;i<=3;i++) { System.out.print("*"); } System.out.println(); //System.out.println(" ***"); } } } }
7.猴子吃桃问题,有一堆桃,每天吃剩余的一半还要多吃一个,结果第十天醒来一看,还剩下1个桃,求没有吃
之前有几个桃。
public class Demo12 { public static void main(String[] args) { // TODO Auto-generated method stub int num =1 ; for(int cishu=1;cishu<=9;cishu++) { num = (num+1)*2; } System.out.println(num); } }
本题采用逆向思维要比之前的思维更简单,并不是所有循环都要用之前的套路,若循环操作前后有联系,找到
他们之间存在的关系有时候比第一种更为简便。(逆向思维)
8.1*2*3*4....*9*11*12*13..*n 当sum>2^25时, 输出sum的值。要求:用while语句操作。注意: 中间没有10的参与。
public class Demo15 { public static void main(String[] args) { // TODO Auto-generated method stub /* * 1*2*3*4....*9*11*12*13..*n sum>2^25 输出sum */ int n=1; int sum =1; while(true) { n++; if(n==10) { continue; } sum=sum*n; if(sum>Math.pow(2, 25)) { System.out.println(sum); break; } } } }
终于打完了, 以上项目案例如果多练习几遍,难度大的循环就掌握了。。。
你们的支持就是我的动力。。。大家一起加油!程序猿是敲出来的 ,不是看几遍就可以的。。。。
相关文章推荐
- JAVASE学习笔记:第三章 JAVA流程控制语句
- Java——第三章(流程控制语句)
- 大三学长带我学习JAVA.作业3.运算符续 Operator cont.) 流程控制语句.Flow.Control.Statement 学长带我学java的作业3
- Core Java第三章知识点总结——程序的流程控制
- [疯狂Java讲义精粹] 第三章|流程控制与数组
- Java学习笔记001——学前准备、数据类型、运算符、流程控制语句
- java第五课:流程控制语句(Flow.Control.Statement)
- PL/SQL程序设计 第三章 PL/SQL流程控制语句
- Java上路04-流程控制语句
- Java中流程控制语句中的陷阱
- 大三学长带我学习JAVA.作业4.流程控制语句.续.Flow.Control.Statement.Cont 理解面向对象程序设计 学长带我学java的作业4
- 【Justep X3平台上的大型企业应用案例分享】X3平台外的流程控制纯SQL语句实现
- (JAVA SE 学习笔记)Java.SE.第006讲.流程控制语句.Flow.Control.Statement
- Think in java 第三章 操作符 第四章 控制执行流程
- 黑马程序员--04 JAVA流程控制语句
- java学习_5.流程控制语句
- Java学习笔记:流程控制之分支语句
- Java流程控制语句
- Java基础_流程控制语句
- java流程控制语句