05、java基础--程序流程控制
程序员文章站
2022-05-07 21:01:51
java基础--程序流程控制 【目录】 一. 顺序结构(宏观上) 二. 分支结构/选择结构(if,switch) 2.1 if语句 2.2 switch语句 三. 循环结构 3.1 for循环 3.2 while循环 其他。。。。。。。 一些关键了解内容 for循环中,for( )括号里定义的变量, ......
java基础--程序流程控制
【目录】
一. 顺序结构(宏观上)
二. 分支结构/选择结构(if,switch)
2.1 if语句
2.2 switch语句
三. 循环结构
3.1 for循环
3.2 while循环
其他。。。。。。。
一些关键了解内容
- for循环中,for( )括号里定义的变量,循环外无法进行访问。
- 键盘录入的方法(需熟记):
- 导入包:import java.util.Scanner;
- 创建扫描对象:Scanner s = new Scanner(System.in);注:同类下,创建一次即可多次使用。
- 调用扫描对象的方法,从键盘获得数据:s.nextInt(); //获取int值,如 int i = nextInt(); 用s.next()获取字符串
- break:终止当前的循环体
- 在switch中,case下若没有break则会贯穿,主要用于在满足多种场景下输出相同结果。
一. 顺序结构
- 语句按照顺序依次执行
- 单纯的顺序结构的程序基本不存在
但是,大型程序从宏观上来看的话,各个模块之间也是呈现顺序结构
二. 分支结构
- 分支结构:也称选择结构,程序根据条件表达式的值来决定程序的走向
2.1 If语句
if语句的第一种格式
1 if(条件表达式){ 2 语句体; 3 } 4 ...//其它语句
if语句的第二种格式
if(条件表达式){ 语句体1; }else{ 语句体2; } ...//其它语句
if语句的第三种格式
if(条件表达式1){ 语句体1; }else if(条件表达式2){ 语句体2; }else if(条件表达式3){ 语句体3; } ... else{ 语句体n; }
if语句注意事项:
- if后的括号内一定是布尔值或者布尔表达式
- 第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中
- if的语句块中可以加多条语句,实现更复杂的逻辑
- if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略
建议不要省略大括号
如何从键盘录入数据?
import java.util.Scanner; Scanner s = new Scanner(System.in); s.nextInt(); //获取int值,用s.next()获取字符串
2.2 switch语句
格式:
switch(表达式或变量){ case 取值1: 语句体1; break; case 取值2: 语句体2; break; … default: 语句体n+1; break; }
switch注意事项:
- switch语句表达式的类型有:byte,short,int,char,String(1.7之后才支持)和枚举类型
- case之间与default没有顺序:case相当于入口点,没有匹配的case将执行default,default也不是必须的
- 结束switch语句的情况:遇到break或执行到switch语句结束
- 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾
switch案例
从键盘输入月份数字,显示是第几个季度。
/* 从键盘输入月份数字,显示是第几个季度 */ import java.util.Scanner; public class SwitchDemo2{ public static void main(String[] args){ Scanner s = new Scanner(System.in); System.out.print("请输入月份:"); int month = s.nextInt(); switch(month){ case 1:{ // System.out.println(month + "属于第一季度"); // break; } case 2:{ // System.out.println(month + "属于第一季度"); // break; } case 3:{ System.out.println(month + "属于第一季度"); break; } case 4:{ // System.out.println(month + "属于第二季度"); // break; } case 5:{ // System.out.println(month + "属于第二季度"); // break; } case 6:{ System.out.println(month + "属于第二季度"); break; } case 7:{ // System.out.println(month + "属于第三季度"); // break; } case 8:{ // System.out.println(month + "属于第三季度"); // break; } case 9:{ System.out.println(month + "属于第三季度"); break; } case 10:{ // System.out.println(month + "属于第四季度"); // break; } case 11:{ // System.out.println(month + "属于第四季度"); // break; } case 12:{ System.out.println(month + "属于第四季度"); break; } default :{ System.out.println("输入的月份有误"); break; } } } }
三. 循环结构
概述:
- 循环语句可以在满足循环条件的情况下,反复执行某一段代码
- 被反复执行的代码称为循环体
- 需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
- 完整的循环应该包含以下四个部分:
- 初始化语句:初始化工作,在循环体开始之前执行
- 循环条件:一个boolean表达式,决定是否执行循环体
- 循环体:反复执行的部分
- 迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束
3.1 for循环
格式
for(初始化表达式;条件表达式;循环变量控制语句){ 循环体语句; }
格式说明:
for运行的顺序:
- 执行初始化表达式,只执行一次,通常是定义循环变量语句
- 判断循环条件:为真就往下执行;为假就结束循环
- 执行循环体语句
- 执行循环变量控制语句,一般是循环变量的自增或自减
- 回到第2步,重复这个过程,直到为假时结束
for循环注意事项:
- 循环变量通常定义为int型,因为最常用的就是int型
- 循环条件判断的结果是boolean类型值
- 小括号中的分号不能写成中文的分号
- 如果循环体只有一条语句的话,可以省略大括号,但建议写全
- 循环变量控制语句不必每次改变1,根据情况,可以是任意值
for循环求和思想
求和思想:在循环体之外定义一个变量,循环体中不断的往这个变量中追加。
//求1-10所有数之和 public class ForDemo{ public static void main(String[] args){ int sum = 0; for (int i = 1;i <= 10;i ++){ sum += i; } System.out.println(sum); } }
for循环练习
/* 在1-100之间,若是3的倍数,则在它之后输出中文“三”,若是5的倍数, 则在它之后输出中文“五”,若是7的倍数,则在它之后输出中文“七” */ public class ForDemo{ public static void main(String[] args){ for(int i = 1;i<=100;i++){ System.out.print(i); if(i % 3 == 0){ System.out.print(" 三"); } if(i % 5 == 0){ System.out.print(" 五"); } if(i % 7 == 0){ System.out.print(" 七"); } System.out.println(); } } }
3.2 while循环
格式
[初始化部分] while(条件表达式){ 循环体语句; [循环变量控制语句] }
执行流程:
- 执行初始化语句(如果有的话)
- 判断条件表达式真假:如果真,往下执行;如果假,结束循环
- 执行循环体语句
- 执行循环变量控制语句(如果有的话)
- 返回第2步,重复执行,直到条件为假,结束循环
break:终止当前的循环体
for 和 while 的应用场景
- 当明确知道循环的范围的时候,通常使用for
- 当不明确循环次数的时候,for和while都可以,通常使用while
案例:
已知:珠穆朗玛峰的高度是:8848米,假设有一张足够大的纸,厚度是0.01米,请问:这张纸折叠多少次可以保证厚度不低于珠穆朗玛峰的高度?
public class WhileDemo{ public static void main(String[] args){ int count = 0; double hill = 8848.0; double paper = 0.01; while(paper < hill){ count++; paper = paper * 2; System.out.println("当前折叠的次数是: " + count + ",当前纸的厚度是: " + paper); } System.out.println("折叠的次数是:"+count); } }
循环变量的使用问题
for循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在for循环的{}之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器
while循环本身就把循环变量定义在循环之外,所以没有这个问题
/* 这是个错误的程序,for{}外面的i无法访问 */ for(int i = 0;i<10;i++){ ... } System.out.println(i); //错误 int i = 0; for(;i<10;i++){ ... } System.out.println(i); //正确
for和while的应用场景
待补充。。。