在程序中,一般包含三种结构:①顺序结构②分支结构③循环结构
下面将对这三种结构进行分别叙述:
一.顺序结构
简而言之:顺序结构就是按照代码书写的顺序将代码一步一步执行。
例如:
二.分支语句
2.1if语句
语法格式一:if(bool值表达式){
语句一;}
else{
语句二;}
需要注意的是:在c语言中0表示假,非零表示真,那么在c中的if中的条件意味着可以是任何值,而java不同,它有着自己独特表示真和假的变量值(即布尔变量),所以在if内的条件中,只能填bool类型的值。
语法格式二
if ( 布尔表达式 1 ){
// 语句 1
} else if ( 布尔表达式 2 ){
// 语句 2
} else {
// 语句 3
}
表达式 1 成立,执行语句 1 ,否则表达式 2 成立,执行语句 2 ,否则执行语句 3
例:
判断一个年份是否为闰年
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个年份");
int year= scan.nextInt();
if((year%4==0&&year%100!=0)||year%400==0)
{
System.out.println(year+"年是闰年");
}
else
{
System.out.println(year+"年不是闰年");
}
}
if语句中需要注意的问题:①分号问题
因为if条件后面有一个分号,所以代码块内的语句并不与if条件绑定,而是一个独立的代码块,所以即使if条件不满足,最后仍然打印hehe结果。
②垂悬else
int x = 10 ;
int y = 10 ;
if ( x == 10 )
if ( y == 10 )
System . out . println ( "aaa" );
else
System . out . println( "bbb");
else并不是根据哪个if与之垂悬而进行匹配,它是根据距离哪个if最近而对它进行匹配。
2.2switch语句
基本语法
int x = 10 ;
if ( x == 10 )
{
// 语句 1
}
else
{
// 语句 2
}
int x = 20 ;
if ( x == 10 );
{
System . out . println ( "hehe" );
}
// 运行结果
hehe
int x = 10 ;
int y = 10 ;
if ( x == 10 )
if ( y == 10 )
System . out . println ( "aaa" );
else
System . out . println ( "bbb" );
switch ( 表达式 ){
case 常量值 1 :{
语句 1 ;
[ break ;]
}
case 常量值 2 :{
语句 2 ;
[ break ;]
}
...
default :{
内容都不满足时执行语句 ;
[ break ;]
}
}
执行流程:
1. 先计算表达式的值
2. 和 case 依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到 break 时结束
3. 当表达式的值没有与所列项匹配时,执行 default
【 注意事项 】
多个 case 后的常量值不可以重复
switch 的括号内只能是以下类型的表达式:
基本类型: byte 、 char 、 short 、 int ,注意不能是 long 类型
引用类型: String 常量串、枚举类型
break 不要遗漏 , 否则会失去 " 多分支选择 " 的效果
Switch语句无法实现相对复杂的条件的表达
int day = 1 ;
switch ( day ) {
case 1 :
System . out . println ( " 星期一 " );
// break;
case 2 :
System . out . println ( " 星期二 " );
break ;
}
// 运行结果
星期一
星期二
switch 不能表达复杂的条件
// 例如 : 如果 num 的值在 10 到 20 之间 , 就打印 hehe
// 这样的代码使用 if 很容易表达 , 但是使用 switch 就无法表示 .
if ( num > 10 && num < 20 ) {
System . out . println ( "hehe" );
}
switch 虽然支持嵌套 , 但是很丑,一般不推荐。
三循环结构
3.1while
例:
public static void main(String[] args) {
int n=1;
int m=1;
int num=1;
int sum=0;
while (n<=5){
while(m<=n){
num *=n;
m++;
}
sum+=num;
n++;
}
System.out.println(sum);
}
注意事项
1. 和 if 类似 , while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句 . 建议还是加上 { }
2. 和 if 类似 , while 后面的 { 建议和 while 写在同一行 .
3. 和 if 类似 , while 后面不要多写 分号 , 否则可能导致循环不能正确执行 .
此时 ; 为 while 的语句体 ( 这是一个空语句 ), 实际的 { } 部分和循环无关 . 此时循环条件 num <= 10 恒成立 , 导致代码
死循环了 .
4.2 break
break 的功能是让循环提前结束 .
代码示例 : 找到 100 - 200 中第一个 3 的倍数
执行到 break 就会让循环结束 .
4.3 continue
continue 的功能是跳过这次循环 , 立即进入下次循环 .
代码示例 : 找到 100 - 200 中所有 3 的倍数
int num = 1 ;
while ( num <= 10 ); {
System . out . println ( num );
num ++ ;
}
// 执行结果
[ 无任何输出 , 程序死循环 ]
int num = 100 ;
while ( num <= 200 ) {
if ( num % 3 == 0 ) {
System . out . println ( " 找到了 3 的倍数 , 为 :" + num );
break ;
}
num ++ ;
}
// 执行结果
找到了 3 的倍数 , 为 : 102 比特就业课
执行到 continue 语句的时候 , 就会立刻进入下次循环 ( 判定循环条件 ), 从而不会执行到下方的打印语句 .
4.4 for 循环
【 基本语法 】
表达式 1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
表达式 2: 循环条件,满则循环继续,否则循环结束
表达式 3: 循环变量更新方式
【 执行过程 】
①②④③--->②④③--->②④③--->②④③--->②④③--->②④③--->...--->②为 false ,循环结束。
【 注意事项 】 ( 和 while 循环类似 )
1. 和 if 类似 , for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句 . 建议还是加上 { }
2. 和 if 类似 , for 后面的 { 建议和 while 写在同一行 .
3. 和 if 类似 , for 后面不要多写 分号 , 否则可能导致循环不能正确执行 .
4. 和 while 循环一样,结束单趟循环用continue,结束整个循环就用break
4.5 do while 循环 ( 选学 )
do {
循环语句 ;
} while ( 循环条件 );
【注意事项】
1. do while 循环最后的分号不要忘记
2. 一般 do while 很少用到 , 更推荐使用 for 和 while.