JAVA流程控制详解-含练习题
2022/2/22 22:34:58
本文主要是介绍JAVA流程控制详解-含练习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JAVA学习-02-韩顺平老师
JAVA流程控制详解-含练习题
- 分支控制
-
单分支
/* 基本语法 if (条件表达式) { if语句块 } */ int a = 10; if ( a > 8 ) { System.out.println("进入了if语句块"); }
-
双分支
/* 基本语法 if (条件表达式) { if语句块 } else { else语句块 } */ int a = 10; if ( a > 8 ) { System.out.println("进入了if语句块"); } else { System.out.println("进入了else语句块"); }
-
多分支
/* 基本语法 if (条件表达式) { if语句块 } else if { else if 语句块 } else { else语句块 } */ int a = 10; if ( a > 8 && a <= 10) { System.out.println("进入了if语句块"); } else if (a >= 10 && a <= 12) { System.out.println("进入了else if 语句块"); } else { System.out.println('进入了else语句块'); }
-
嵌套分支
- 在分支语句中还含有分支语句
/* 基本语法 if (条件表达式) { if () { } else { } } else { else语句块 } */ int a = 10; int b = 100; if ( a > 8 && a <= 10) { if( b > 77 ) { System.out.println('b大于77'); } else { System.out.println('b小于77'); } } else { System.out.println('进入了else语句块'); }
-
switch语句
- 基本语法
/*switch(表达式){ case 表达式常量1: 语句1; [ break;] // [ ] 表示可选 case 表达式常量2: 语句2; [ break;] ...... case 表达式常量n: 语句n; [ break;] [default:语句n+1;] } */ // 输出今天是今年的第几天 import java.util.Scanner; public class test_3 { public static void main(String[] args) { int sumDays = 0; Scanner scan = new Scanner(System.in); System.out.println("请输入年份:"); int year = scan.nextInt(); System.out.println("请输入月:(1-12)"); int mouth = scan.nextInt(); System.out.println("请输入日:(1-31)"); // 输入一个整型天数 int day = scan.nextInt(); switch (mouth){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31;//6月24日 31+29+31+30+31+24 case 5: sumDays += 30; case 4: sumDays += 31; case 3: if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ sumDays += 29; }else { sumDays += 28; } //sumDays += 29; case 2: sumDays += 31; case 1: sumDays += day; System.out.println(year + "年" + mouth + "月" + day + "日是" + year +"年的第" +sumDays + "天"); } } }
- 注意细节
- 1.表示式的数据类型应和case的数据类型一致或者是可以自动转换成可以比较的类型
- 2.表达式中的返回值类型必须是(byte,short,char,int,enum,String)
- 3.case的值必须是常量
- 4.default是可选的
- 5.当满足一个case时,如果没有break,则会直接执行下一个case,不会进行判断,直到遇到break,才会退出
- 练习
import java.util.Scanner; public class SwitchExercise{ public static void main(String[] args) { // 判断季节 (采用穿透的性质) System.out.println("请输入1-12月:"); Scanner myScanner = new Scanner(System.in); int month = myScanner.nextInt(); switch(month){ case 3: case 4: case 5: System.out.println(month + "月是春季"); break;//必须要有一个break来终止穿刺 case 6: case 7: case 8: System.out.println(month + "月是夏季"); break; case 9: case 10: case 11: System.out.println(month + "月是秋季"); break; case 1: case 2: case 12: System.out.println(month + "月是冬季"); break; default: System.out.println("请输入正确的月份"); break; } } } ```
-
- 循环控制
-
for循环
- 简单循环
public class forExercise { public static void main(String[] args) { /* 基本语法 for(初始化语句;循环条件语句;控制条件语句) { 循环体语句 } */ for(int i = 1; i <= 3; i++ ) { System.out.println("我爱写代码"); } } }
- 嵌套循环
- 内层循环是外层循环的循环体语句
public class forExercise { public static void main(String[] args) { /* 基本语法 for(初始化语句;循环条件语句;控制条件语句) { 循环体语句 } */ for(int i = 1; i <= 3; i++ ) { for(int j = 1; j <= 2; j++) { System.out.println("我爱写代码"); } } } }
- 练习题
import java.util.Scanner; // 导入类 public class MulForExercise { public static void main(String[] args) { /* 1.统计2个班的情况,每个班有3个同学 - 求出各班的平均分和所有班级的平均分 - 统计及格人数 */ Scanner myScanner = new Scanner(System.in); int classNum = 2; int stuNum = 3; double allScore = 0; // 所有总分 int passNum = 0; // 统计及格人数 for(int i = 1; i <= classNum; i++) { double totalScore = 0; // 统计每个班的总分 for(int j = 1; j <= stuNum; j++) { System.out.print("请输入" + i + "班" + j + "个同学的成绩:"); int socre = myScanner.nextInt(); totalScore += socre; allScore += socre; if( socre >= 60 ) { passNum += 1; } } System.out.println(i + "班的平均分为:" + (int)(totalScore/stuNum)); } System.out.println("总分数为:" + allScore + "总平均分为" + (allScore/(stuNum*classNum))); // 2.打印九九乘法表 for(int i = 1; i <= 9; i++) { for(int j = 1; j <= i; j++) { System.out.print(i + "x" + j + "\t"); } System.out.println(""); // 换行 } } }
-
while循环
- 基本语法
/* while(条件表达式){ 循环体语句 条件控制语句 } */ int num = 1; while(num < 10) { System.out.println("num=" + num); num ++; }
- 注意细节
- 条件表达式必须要能够返回一个boolean类型的值
- while必须要有条件控制语句,不然会形成死循环
-
dowhile循环
- 基本语法
/* do { 循环体语句 条件控制语句 } while(条件表达式) */ int num = 1; do { System.out.println("num=" + num); num ++; } while(num < 10);
- 注意事项
- 条件表达式必须要能够返回一个boolean类型的值
- dowhile语句,循环体一定会被执行一次
-
braek、continue、return控制语句
- break
- break 用于中断此次的循环,直接跳循环,但是不退出程序
- 一般用于 while、for、dowhile、switch
- continue
- continue 用于跳过此次循环,直接进入下一循环,也不退出程序
- 一般用于 while、for、dowhile、switch
- return
- return 用于退出程序,直接结束程序的执行,循环后的代码不再执行
- 三者的异同点
- continue、break 两者都不会退出程序,循环后的代码仍可以执行
- continue、break 可以通过标签 label 来指定跳出哪一级循环
public class forExercise { public static void main(String[] args) { /* 基本语法 for(初始化语句;循环条件语句;控制条件语句) { 循环体语句 } */ label1: for(int i = 1; i <= 3; i++ ) { label2: for(int j = 1; j <= 2; j++) { System.out.println("我爱写代码"); if(j == 2) { // break; // 默认是跳出内层循环 break label1 // 跳出外层循环 } } } } }
- break
-
流程控制作业
public class ControlProcessExercise { public static void main(String[] args) { /* 某人有100000元,经过一个路口,需要缴费: 1.当现金>50000元时,每次交5% 2.当现金<=50000元时,每次交1000 可以经过多少次路口? */ int money = 100000; int times = 0; while(money > 0) { if( money >50000 ) { money -= money * 0.05; times +=1; } else if (money <= 50000 && money >= 1000) { money -=1000; times +=1; } else{ break; } } System.out.println("可以经过" + times + "次路口"); // 二、判断一个整数是不是水鲜花数 System.out.print("请输入一个整数:"); int num = myScanner.nextInt(); int verification = num;//保存num 后面用来验证是否想的 int total = 0; while(num >0) { int remainder = num % 10; total += remainder*remainder*remainder; num = num / 10; } if( total == verification) { System.out.println(verification + "这个数是水仙花数"); } else { System.out.println(verification + "这个数不是水仙花数"); } // 三、输出1-100之间的不能被5整除的数,每五行一个 int count = 0; // 用来控制换行 for (int i =1; i<=100; i++) { if(i % 5 == 0) { continue; } else { System.out.print(i + "\t"); count ++; if(count == 5){ System.out.println(""); count = 0; } } } // 四、 1-1/2+1/3+1/4....1/100 的和 double total = 0; // 注意初始化定义,1/(double)i for(double i = 1; i <= 100; i++) { if(i % 2 == 0) { total -= (1 / i); } else { total += (1 / i); } } System.out.println(total); // 0.688172179310195 // 五、计算 1 + (1+2) + (1+2+3) + ... + (1+...+100) int total = 0; for (int i = 1; i <= 100; i++) { for(int j = 1; j <= i; j++) { total += j; } } System.out.println(total);// 171700 /* 六、打印空心等腰三角形 * * * * * * * ********* */ int starLevel = 10; // 控制打印行数 for(int i = 1; i <= starLevel; i++) { for(int k = starLevel-i; k >0; k--) { System.out.print(" "); } // 控制打印个数 for(int j = 1; j <= 2*i - 1; j++) { // 如果是 第一个或是最后一个打印星星,或者最后一行打印星星 if(j == 1 || j == 2*i - 1 || i == starLevel) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(""); // 换行 } } } ```
-
自己的小总结,如出现错误希望大家纠正交流学习!
这篇关于JAVA流程控制详解-含练习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide
- 2025-01-10便捷好用的电商API工具合集
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀