文章目录
一、分支结构
1. if分支结构【重点】
基本if选择结构
- 语法
if(布尔表达式){
//代码块
}
- 执行流程:
对布尔表达式进行判断;
结果为true,则先执行代码块,再执行后续代码;
结果为false,则跳过执行代码块,直接执行后续代码 - 案例
main(){
System.out.print("请输入一个数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
if(n % 2 == 0){
System.out.print("偶数");
}
}
if else选择结构
- 语法
if(布尔表达式){
//代码块1
}else{
//代码块2
}
- 执行流程:
对布尔表达式进行判断;
结果为true,则先执行代码块1,在退出整个结构,执行后续代码 - 案例
main(){
System.out.print("请输入一个数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
if(n % 2 == 0){
System.out.print("偶数");
}else{
System.out.print("奇数");
}
}
多重if结构
- 语法
if(布尔表达式1){
//代码块1
}else if(布尔表达式2){
//代码块2
}else if(布尔表达式3){
//代码块3
}else{
//代码块4
}
-
执行流程:
表达式1为true,则执行代码块1,再退出整个结构;
表达式2为true,则执行代码块2,再退出整个结构;
表达式3为true,则执行代码块3,再退出整个结构;
以上均为false,则执行代码块4,再退出整个结构;相互排斥,有一个为true,其他均不再执行,适用于区间判断
-
注意
- elseif个数根据开发需求确定;
最后else根据开发需求决定是否定义(不是必须写的)判断条件之间互斥. - 如果 if后面的{ }中只有一条语句,则可以省略{};
但是省略之后,if中的条件只对仅跟着{ }后面的一条语句起作用,即使是空语句
( ; 代表一个语句)。
- elseif个数根据开发需求确定;
-
案例
main(){
System.out.print("请输入一个数:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
if(n < 0){
System.out.print("数据错误!");
System.exit(0);
}
if(n <= 2){
System.out.print("婴儿");
}else if(n <= 12){
System.out.print("儿童");
}else if(n <= 40){
System.out.print("青年");
}else if(n <= 60){
System.out.print("中年");
}else{
System.out.print("老年");
}
}
if嵌套结构
- 语法
if(外层表达式){
if(内层表达式){
//内层代码块1
}else{
//内层代码块2
}
}else{
//外层代码块
}
- 执行流程:
当外层条件满足时,再判断内层条件一个选择结构中,可嵌套另一个选择结构
嵌套格式正确的情况下,支持任意组合 - 注意
先判断外层if的条件,条件成立,则判断内层if条件…
2. switch…case分支结构(等值分支)
- 语法
switch(变量|表达式){ //变量int,表达式的值可以为byte,short,int,char
case 值1:
//逻辑代码1;
case 值2:
//逻辑代码2;
case 值n:
//逻辑代码n;
default:
//未满足case时的逻辑代码;
}
-
执行流程:
如果变量中的值等于值1,则执行逻辑代码1;
如果变量中的值等于值2,则执行逻辑代码2;
如果变量中的值等于值3,则执行逻辑代码3;
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。
所有case的取值不可相同 -
注意
- a. switch后面()中表达式的结果类型
byte/short/int/char;
JDK7.0及以上版本支持String的结果类型。 - b. break:终止、中断,break应用再switch…case结构中代表终止、跳出switch…case结构。
- c. default没有位置限制,可以写在 swtich结构{}中的case或是case都可以,所以建议 default后面的break不省略。
- a. switch后面()中表达式的结果类型
-
案例
main(){
Scanner s = new Scanner(System.in);
int a = s.nextInt();
switch(a){
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
default:
System.out.println("Others");
}
}
二、循环结构
1. 循环的理解
概念
通过某一个条件,重复并且有规律的执行一段代码。
循环组成
循环变量的初始化、循环的条件、循环变量的改变(递增/递减)、循环体。
2. while循环(不确定循环)
- 语法
while(布尔表达式){
//逻辑代码(循环操作 )
}
- 执行流程:
先对布尔表达式进行判断,结果为true,则执行逻辑代码;
本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码 - 特点
先判断,再执行,执行次数0~n次 - 如果循环中,没有对循环变量进行改变,可能会出现死循环
- 循环中需要累加数据之和,则定义累加器,通常初始化数据为0;
而且累加器需要定义在循环的外面。
- 案例
main(){
int i = 1;//循环变量
int result = 0;
while(i<=100) {
result = result +i;
i++;
}
System.out.println(result);
}
3、do while循环
- 语法
do{
//逻辑代码(循环操作)
}while(布尔表达式);
- 执行流程:
先执行一次循环操作后,再进行布尔表达式的判断;
如果结果为true,则再次执行循环操作;
如果结果为false,才会退出循环结构,执行后续代码 - 特点
先执行,再判断。执行的次数为 1~n次
- 案例
main(){
int i = 1;//循环变量
do{
result =result+i;
i++;
}while(i<=100){
System.out.println(result);
}
}
4、for循环(确定循环)
- 语法
for(初始部分;循环条件;迭代部分){ //;;不能省略
//循环操作
}
- 执行流程:
先对布尔表达式进行判断,结果为true,则执行逻辑代码;
本次执行完后,再次进行判断,结果仍旧为true,则再次执行逻辑代码;
直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码 - 特点:先判断,再执行,执行次数:0~n次
- 注意
- a. 循环变量的初始化可以定义在循环的外面,但是for后面()中的分号不能省略。定义在for后面()中的循环变量只能在当前循环结构中被使用,循环一旦结束,循环变量失效,节省内存空间;如果将循环变量定义在for的外面,扩大了循环变量的作用范围,可能造成空间浪费。
- b. 如果循环条件省略,则默认条件为true,可能出现死循环现象。
- c. 循环变量的改变可以定义在 for的{}中,但是避免多次对循环变量for(循环变量的初始化;循环条件;循环变量的改变)
main(){
for(int i = 1;i <= 100;i++){
result = result +i;
}
System.out.println(result);
}
5、嵌套循环
概念
在循环结构中嵌套一个完整的循环结构。(一个循环结构的循环体又是一个循环)
循环的次数
外层循环次数*内层循环次数
循环嵌套打印图形
- 外层循环
控制图形的行数 - 内层循环:控制图形的列数
流程控制关键字
- break:结束、终止本层循环
- continue:中止跳出本层的本次循环,从而进入本层下一次循环
- 案例
//嵌套循环
main(){
for(int i = 1;i <= 10;i++){
for(int j = 1;j <= 5;j++) {
if(i == 4 && j==3) break;
System.out.print("i="+i+"j"+j+"\t");
}
System.out.println();
}
}
//流程控制关键字
main(){
for(int i = 1;i <= 10;i++){
if(i == 9) break;
System.out.println("HelloWorld"+i);
}
for(int i = 1;i <= 10;i++){
if(i == 9) continue;
System.out.println("HelloWorld"+i);
}
}
//流程控制关键字案例
//外层循环
//outer:
for(int i=1;i<=3;i++){
//内层循环
//inner:
for(int j=1;j<=5;j++){
if(j==3){
continueouter;//中止、跳出外层循环的本次循环,进入外层循环的下一次
}
System.out.println("i="+i+",j="+j);
}
}
//流程控制关键字案例
//外层循环
//outer:
for(int i=1;i<=3;i++){
//内层循环
//inner:
for(int j=1;j<=5;j++){
if(j==3){
breakouter;//终止、结束外层循环结构
}
System.out.println("i="+i+",j="+j);
}
}
三、局部变量【重点】
概念
- 定义在函数/方法/初始化代码块内部的变量
- 目前:定义在函数内部的变量称为局部变量
特点
- 局部变量必须先赋值再使用
错误提示:可能尚未初始化变量 - 作用范围
从定义它的位置开始,到定义它的代码块结束
超出范围使用,提示错误:找不到符号 - 命名冲突
在重合的作用范围内,不允许命名冲突(有同名的变量名)
错误提示:已在函数 main(String[])中定义了变量
扩充
- 随机数生成(Random)
- 位于java.util包中
导入包:import java.util.Random;
- 创建Random对象
Random rd=new Random();
- 使用rd生成整数
int n=rd.nextInt(n); //自动生成0~n-1的数据
- 位于java.util包中
整理不易,喜欢请点个赞!
编者微信:1014961803,添加时请备注"CSDN"