1. 程序流程控制
1.1 分类
顺序结构(即普通代码,按顺序读取)
判断结构
选择结构
循环结构
2. 判断结构(if语句)
2.1 格式1
if(条件表达式)
{
执行语句;
}
2.2 格式2
if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
2.3 格式3
If(条件表达式)
{
执行语句;
}
elseif(条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
2.4 注意点
1、 if只有一条语句时,可以不用大括号。
2、 ifelse语句类似于三元运算符,但三元运算符是一种运算,运算之后有结果。
3、 每一种格式都是单条语句,即只执行一次。
2.5 练习
class IfDemo1
{
public static void main(String[] args)
{
/*
一年有四季。
春季:3 4 5
夏季:6 7 8
秋季:9 10 11
冬季:12 1 2
根据用户输入的月份,给出对应的季节。
*/
int month = 3;
if(month<1 || month>12)
System.out.println("没有对应的月份");
else if(month>=3 && month<=5)
System.out.println(month+"月是春季");
else if(month>=6 && month<=8)
System.out.println(month+"月是夏季");
else if(month>=9 && month<=11)
System.out.println(month+"月是秋季");
else
System.out.println(month+"月是冬季");
}
}
结果:3月是春季
3. 选择结构
3.1 格式
switch(表达式)
{
case 取值1:
执行语句;
break;
case取值2:
执行语句;
break;
…
default:
执行语句;
break;
}
3.2 注意点
1、 switch语句选择的类型只有四种:byte,short,int,char。
JDk1.5可以支持enum类型,最新版本支持字符串类型。
2、 case之间与default没有顺序。先执行第一个case,没有匹配的case执
行default。
3、 结束switch语句的两种情况:遇到break,执行到switch语句结束。
4、 如果匹配的case或者default没有对应的break,那么程序会继续向下
执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
3.3 练习
class SwitchDemo1
{
public static void main(String[] args){
int x= 3;
switch(x)
{
default:
System.out.println("d" );
break;
case 4:
System.out.println("a" );
break;
case 2:
System.out.println("b" );
break;
case 3:
System.out.println("c" );
break;
}
}
}
结果:c
class SwitchDemo2
{
public static void main(String[] args){
int x= 3;
switch (x)
{
case 4:
System.out.println("a" );//不匹配不执行
break ;
case 2:
System.out.println("b" );//不匹配不执行
case 3:
System.out.println("c" );//匹配执行,无break
default :
System.out.println("d" );//继续执行默认
}
}
}
结果:c
d
class SwitchDemo3//多个case对应同一个结果
{
public static void main(String[] args){
int month = 3;
switch(month){
case 3:
case 4:
case 5:
System.out.println(month + "月对应的是春季" );
case 6:
case 7:
case 8:
System.out.println(month + "月对应的是夏季" );
case 9:
case 10:
case 11:
System.out.println(month + "月对应的是秋季" );
case 12:
case 1:
case 2:
System.out.println(month + "月对应的是冬季" );
default:
System.out.println(month + "没有对应的季节" );
}
}
}
结果:3月对应的是春季
3.4 if与switch
1、 if可以判断具体的值、判断区间以及布尔型结果。
2、 switch可以判断具体的值,这几个值通常是固定的。
3、 单个数据判断,值不多,用switch,其他用if。
4. 循环结构(while、do while、for)
4.1 while语句
while语句格式:
while(条件表达式)
{
执行语句;
}
示例
class WhileDemo1
{
public static void main(String[] args)
{
int x = 1;
while(x<3)//注意后面不要有分号,不然就是死循环。
{
System.out.println("x="+x);
x++;
}
}
}
结果:
x=1
x=2
4.2 do while语句
dowhile语句格式:
do
{
执行语句;
}while(条件表达式);
dowhile特点是条件无论是否满足,循环体至少被执行一次。(先执行后判断)
示例
class DoWhileDemo1
{
public static void main(String[] args){
int x = 1;
do{
System.out.println("x = " + x);
x++;
}
while(x < 3);
}
}
结果:
x=1
x=2
4.3 for循环
格式:
for(初始化表达式1;循环条件表达式2;循环后的操作表达式3)
{
执行语句4;
}
执行顺序是:初始化1-->判断条件2-->执行语句4-->表达式3-->判断条件2-->语句4-->表达式3……直到条件不符合为止。
条件表达式结果必须是布尔型,不写默认是true。
示例:
class ForDemo1
{
public static void main(String[]args)
{
int x=1;
for(System.out.print ("a");x<3;System.out.print("c"))
{
System.out.print("d");
x++;
}
}
}
结果:adcdc
4.4 注意点
1、 for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
2、 while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
3、 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
5. 循环嵌套
5.1 循环中还有循环,称之为循环嵌套
5.2 练习1
打印输出以下图形
*****
****
***
**
*
class ForForDemo
{
public static void main(String[] args)
{
for(int x = 5; x >=1; x--)
{
for(int y = x; y >=1; y--)
{
System.out.print("*" );
}
System.out.println();
}
}
}
练习2 九九乘法表
class ForForDemo
{
public static void main(String[] args){
for(int x = 1; x <= 9; x++){
for(int y = 1; y <= x; y++){
System.out.print(y + "*" + x + "=" + (x * y) + "\t");
}
System.out.println();
}
}
}
5.3 其他流程控制语句
break(跳出),continue(继续)
break语句:应用范围:选择结构(switch)和循环结构(loop)。
continue语句:应用于循环结构(loop)。
示例:break
class BreakDemo
{
public static void main(String[] args){
for(int x = 0; x < 3; x++){
for(int y = 0; y < 4; y++){
System.out.println("x = " + x);
break;
}
}
}
}
结果
x=0
x=1
x=2
此时y还是等于0,内层循环没有执行到y++。
示例:continue
class ContinueDemo
{
public static void main(String[] args){
for(int x = 0; x < 7; x++){
if(x % 2 == 0)
continue;
System.out.println("x = " + x);
}
}
}
结果
x=1
x=3
x=5
5.4 注意点
1、这两个语句离开应用范围,存在是没有意义的。
2、这个两个语句单独存在下面都不可以有语句,因为执行不到。
3、continue语句是结束本次循环继续下次循环。
4、标号的出现,可以让这两个语句作
例如
class ContinueDemo2
{
public static void main(String[] args){
out: for(int x = 0; x < 3; x++){
in: for(int y = 0; y < 4; y++){
System.out.println("x = " + x);
continue out ;//继续外层循环
}
}
}
}
结果
x=0
x=1
x=2