Java流程控制语句

Java流程控制语句
1 控制台输入获取用户在控制台输入的内容,使用引用数据类型Scanner使用Scanner步骤:导包创建使用// 声明当前类所在的包 package cn.javasm.demo; // 导包 import java.util.Scanner; public class TestDemo { public static void main(String[] args) { // 创建 // 类型 变量名 new 类型(System.in); Scanner scanner new Scanner(System.in); System.out.println(请输入一个整数:); // 使用 // 获取int类型的数据 int a scanner.nextInt(); System.out.println(用户输入的是 a); // String是引用数据类型 表示字符串 // 获取用户输入的字符串 String str scanner.next(); System.out.println(str); } }2 流程控制语句程序在执行过程中各条语句的执行顺序对程序的结果是有直接的影响的。也就是说程序的流程对运行结果有直接的影响。所以我们必须要清楚每一条语句的执行流程。分类:顺序结构选择结构循环结构2.1 顺序结构顺序结构就是代码从上到下执行。默认都是顺序结构。public static void main(String[] args) { System.out.println(今天是6月6号); System.out.println(明天就要高考了); System.out.println(下星期穿少点太热了); }2.2 选择结构选择结构也叫分支结构根据不同的条件执行不同的代码。选择结构分为:if语句switch语句2.2.1 if语句if语句分为三种格式2.2.1.1 if语句格式1格式:if (布尔表达式){ 语句体; }执行流程:首先判断布尔表达式的结果是true还是false如果是true就执行语句体如果是false就不执行语句体直接执行其他语句public static void main(String[] args) { System.out.println(一天晚上闲的没事干在大街游荡~); System.out.println(发现一个网吧); int age 17; if (age 18){ System.out.println(掏身份证开机); System.out.println(上号); System.out.println(开始骂人); System.out.println(挂机); System.out.println(下机); } System.out.println(回家睡觉); }注意:如果if语句中只有一行代码可以省略大括号流程图:2.2.1.2 if语句格式2格式:if (布尔表达式){ 语句体1; }else{ 语句体2; }执行流程:首先判断布尔表达式的结果是true还是false如果是true就执行语句体1如果是false就执行语句体2public static void main(String[] args) { // 创建 Scanner scanner new Scanner(System.in); System.out.println(请输入您的年龄:); // 使用 int age scanner.nextInt(); if (age 18){ System.out.println(成年人要为自己做的事负责); }else { System.out.println(未成年人可以少负责); } }流程图课堂练习: 输入一个整数输出这个数是奇数还是偶数public static void main(String[] args) { // 输入一个整数输出这个数是奇数还是偶数 // alt 回车 自动导包 Scanner scanner new Scanner(System.in); System.out.println(请输入一个整数:); int num scanner.nextInt(); // 判断是奇数还是偶数 if (num % 2 0){ System.out.println(num 是偶数); }else { System.out.println(num 是奇数); } }2.2.1.3 if语句格式3格式:if (布尔表达式1){ 语句体1; }else if(布尔表达式2){ 语句体2; }else if(布尔表达式3){ 语句体3; }else if(布尔表达式4){ 语句体4; } ... else if(布尔表达式n){ 语句体n; }else{ 语句体n 1; }执行流程:首先判断布尔表达式1的结果是true还是false如果是true就执行语句体1如果是false就继续判断布尔表达式2的结果是true还是false如果是true就执行语句体2如果是false就继续判断布尔表达式3的结果是true还是false.....如果没有任何布尔表达式的结果是true就执行语句体n 1流程图:public static void main(String[] args) { Scanner scanner new Scanner(System.in); int age scanner.nextInt(); if (age 0 age 7){ System.out.println(婴幼儿); }else if (age 7 age 12){ System.out.println(儿童); }else if (age 12 age 18){ System.out.println(少年); }else if (age 18 age 40){ System.out.println(青年); }else if (age 40 age 60){ System.out.println(中年); }else if (age 60 age 110){ System.out.println(老年); }else { System.out.println(妖怪~); } }课堂练习:x 10 y 3x 1-2 x 10 y 3xx -2 y 3x - 1让用户输入x的值计算出y的值并输出public static void main(String[] args) { Scanner scanner new Scanner(System.in); System.out.println(请输入一个x的值); int x scanner.nextInt(); int y; if (x 10){ y 3 * x 1; }else if(x -2 x 10){ y 3 * x; }else { y 3 * x - 1; } System.out.println(y的值是 y); }课堂练习:根据用户输入的月份输出正确的季节public static void main(String[] args) { // 根据用户输入的月份输出正确的季节 Scanner scanner new Scanner(System.in); System.out.println(请输入月份); int month scanner.nextInt(); if (month 3 month 5){ System.out.println(春天去郊游); }else if (month 6 month 8){ System.out.println(夏天吃西瓜); }else if (month 9 month 11){ System.out.println(秋天吃柿子); }else if (month 12 || month 1 || month 2){ System.out.println(冬天烤红薯); }else { System.out.println(您输入的月份不正确!); } }2.2.2 switch语句格式:switch (表达式){ case 目标值1: 语句体1; break; case 目标值2: 语句体2; break; ... case 目标值n: 语句体n; break default: 语句体n 1; break; }解释:表达式的取值类型可以是 byte short int charJDK5之后可以是枚举JDK7之后可以是字符串case 后面是要和表达式进行比较的值语句体可以是一条语句也可以是多条语句break表示中断可以立即结束switch语句default语句表示所有的目标值都没有匹配时执行default中的语句体执行流程:首先计算表达式的值使用表达式的值依次和case的目标值进行比较如果相同就执行对应的语句体。如果都不相同就执行default语句public static void main(String[] args) { // 根据用户输入的数字显示正确的星期几 Scanner scanner new Scanner(System.in); System.out.println(请输入数字); int weekday scanner.nextInt(); switch (weekday){ case 1: System.out.println(星期一); break; case 2: System.out.println(星期二); break; case 3: System.out.println(星期三); break; case 4: System.out.println(星期四); break; case 5: System.out.println(星期五); break; case 6: System.out.println(星期六); break; case 7: System.out.println(星期日); break; default: System.out.println(请输入1-7的整数); break; } }流程图:注意点:default中的break如果在代码的最后可以省略switch语句中的顺序不影响最终的结果case具有穿透效果。如果没有break的影响会一直执行下去。课堂练习:根据用户输入的月份输出正确的季节public static void main(String[] args) { Scanner scanner new Scanner(System.in); System.out.println(请输入对应的月份); int month scanner.nextInt(); switch (month){ case 3: case 4: case 5: System.out.println(春天万物复苏); break; case 6: case 7: case 8: System.out.println(夏天捉小龙虾); break; case 9: case 10: case 11: System.out.println(秋天登高); break; case 12: case 1: case 2: System.out.println(冬天打雪仗); break; default: System.out.println(傻der~); break; } }2.3 循环结构2.3.1 概述循环语句可以在满足循环条件的情况下反复执行某一段代码这段被重复执行的代码被称之为循环体语句。当反复执行这个循环体时需要在合适的时候把循环判断条件修改为false从而结束循环。循环语句:for循环while循环do-while循环2.3.2 循环语句的组成循环变量初始化(初始化表达式):一条或者多条语句这些语句完成一些初始化操作循环出口(布尔表达式)这是一个boolean表达式这个表达式能决定是否要继续执行循环体循环语句(循环体)这个部分是真正要多次执行的代码循环增量(步进表达式)这个部门在一次循环体结束后下一次循环判断条件执行前执行。通过控制循环条件变量使得循环在合适的时候结束。2.3.3 for循环结构格式:for (初始化表达式1;布尔表达式2;步进表达式4){ 循环体3; }执行流程:执行顺序: 1 2 3 4 2 3 4 ..... 2如果布尔表达式的结果是true那么就继续循环如果结果是false就结束循环流程图:public static void main(String[] args) { // // 打印100次HelloWorld // for (int i 1;i 100;i){ // System.out.println(HelloWorld i); // } // // // 打印10 - 1 // for (int i 10;i 1;i--){ // System.out.println(i); // } // 求1-100之间的偶数和 // 代表和的变量 // int sum 0; // for (int i 1;i 100;i){ // // 判断i是否是偶数 // if (i % 2 0){ // sum i; // } // } // // shift alt 上下键 // System.out.println(和是 sum); // 统计水仙花数的个数 // 水仙花数是一个三位数其中个位的立方 十位的立方 百位的立方和 等于 这个三位数自身 // 153 3 * 3 * 3 5 * 5 * 5 1 * 1 * 1 153 // 水仙花数的个数 int count 0; for (int i 100;i 1000;i){ // 获取i的个位十位和百位 int ge i % 10; int shi i / 10 % 10; int bai i / 100 % 10; if ((ge * ge * ge shi * shi * shi bai * bai * bai) i){ count; } } System.out.println(水仙花数有 count 个); }2.3.4 while循环结构基本格式:while (布尔表达式){ 循环体语句; }扩展格式:初始化表达式1; while (布尔表达式2){ 循环体语句3; 步进表达式4; }执行顺序: 1 2 3 4 2 3 4 ...2流程图:public static void main(String[] args) { // 输出100次HelloWorld // int i 1; // while (i 100){ // System.out.println(HelloWorld); // i; // } // 求1-100之间的偶数和 // int sum 0; // int i 2; // while (i 100){ // sum i; // // i 2; // } // System.out.println(sum的值是 sum); // 打印水仙花数 int i 100; while (i 1000){ int ge i % 10; int shi i / 10 % 10; int bai i / 100; // 判断是否是水仙花数 if ((ge * ge * ge shi * shi * shi bai * bai * bai) i) System.out.println(水仙花数是 i); i; } }2.3.5 do-while循环结构基本格式:do{ 循环体语句; }while(布尔表达式);扩展格式:初始化表达式1; do{ 循环体语句3; 步进表达式4; }while(布尔表达式2);执行顺序:1 3 4 2 3 4 2 3 4 .....2流程图:public static void main(String[] args) { // // 打印100次HelloWorld // int i 1; // do{ // System.out.println(HelloWorld); // i; // }while (i 100); // 求 1- 100之和 // int i 1; // int sum 0; // do{ // sum i; // i; // }while (i 100); // System.out.println(sum的值是 sum); // 统计水仙花数有多少个 int i 100; int count 0; do{ // 获取个位十位和百位 int ge i % 10; int shi i / 10 % 10; int bai i / 100; // 判断是否是水仙花数 if ((ge * ge * ge shi * shi * shi bai * bai * bai) i) count; i; }while (i 1000); System.out.println(水仙花数总共有 count 个); }三种循环的区别?dowhile循环至少会执行一次循环语句for循环结束后控制条件语句的那个变量就已经被回收了。但是while和doWhile循环中的变量依然存在。使用推荐: for -- while -- doWhile注意:循环是可以嵌套的。for (int i 1;i 10;i){ System.out.println(i i); for (int j 1;j 10;j){ System.out.println(j j); } }2.3.6 跳转控制语句让循环在某一步的时候结束或者跳过某些数据不要这些数据Java提供了跳转控制语句来中断和跳转。break 中断可以用在循环中也可以用在switch语句中表示立即结束循环或者结束switch语句continue 继续只能用在循环中表示立即结束本次循环开始下一次循环无论是break还是continue在多个循环嵌套中只作用于当前循环for (int i 1;i 10;i){ System.out.println(i i); for (int j 1;j 10;j){ // 立即结束最近的循环 if (j 2) break; System.out.println(j j); } }2.3.7 死循环死循环又称之为永真循环或者无限循环.就是循环的条件判断一直都是true循环不会结束。死循环标准写法: while(true){}// 死循环 // while (true){ // int i scanner.nextInt(); // System.out.println(i); // if (i 10) break; // } // for (; true; ) { // } // for (;;){ // // } String str null; while (!y.equals(str)){ str scanner.next(); System.out.println(str); }