流程控制语句是用来控制程序中各语句执行顺序的语句。总体分为三类:顺序结构、选择结构、循环结构。
选择结构:
选择结构分为四种1、if单选泽结构 2、if-else双选择结构 3、if-else if-else多选择结构 4、switch结构
首先if单选泽结构,语法结构如下:
if(布尔表达式){
语句块
}
if语句对布尔表达式判定为真则执行语句块。如果if语句不写()则只作用于后面的第一条语句。
相关测试如下:
int a =(int)(6*Math.random()+1 );//Math.random()返回0-1之间的随机数
int b =(int)(6*Math.random()+1 );
int c =(int)(6*Math.random()+1 );
int d=a+b+c;
if(d>12){
System.out.println("今天运气不错哦");
}
if(d>9&&d<=12){//注意不要写成数学形式的9
if-else双选择结构,当if后布尔表达式为真执行语块1,否则执行else后语块二。相关语法结构如下:
if(布尔表达式){
语块一
}else{
语块二
}
测试代码如下:
double r =5*Math.random();//随机产生一个【0.0,5.0)区间的半径
double area =Math.PI*r*r;
double c =Math.PI*2*r;
System.out.println("半径是"+r);
System.out.println("周长是"+c);
System.out.println("面积是"+area);
if(area>c){
System.out.println("面积比周长大");
}else {
System.out.println("面积小于等于周长");
多选择结构:
if(布尔表达式1){
语块1
}else if(布尔表达式2){
语块2
}else{
语块3
}
当布尔表达式1为真时执行1,否则判断表达式2,若为真执行语块二,如果均不符合执行else后语块3.
测试代码:
int score =(int )(100*Math.random());
if (score<60){
System.out.println("你没有及格!");
}else if (score<75){
System.out.println("低分飘过,还算凑合。");
}else if(score<85){
System.out.println("哎呦,不错呦~");
}else{
System.out.println("厉害了,666");
}
switch多选择结构;
switch语句会根据表达式的值从相匹配的case标签处开始执行一直执行到break语句处或者是switch语句的末尾,如果表达式的值与任一case值不符,则进入default语句,如果存在的话。
当布尔式是等值判断的情况,可以使用if-else if-else多选择结构或switch语句,如果布尔表达式是区间判断的情况只能用if-else if-else多选择结构。
测试代码:
System.out.println("请输入一个0-10之间的数:");
Scanner sc =new Scanner(System.in);
int a =sc.nextInt();
switch (a){
case 1:System.out.println("我是1~");break;
case 2:System.out.println("我是2~");break;
case 3:System.out.println("我是3~");break;
case 4:System.out.println("我是4~");break;
default:
System.out.println("我是其他数");
}
System.out.println("#################");
switch (a){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("a小于等于5");break;
case 6:
case 7:
System.out.println("a大于5");break;
default:
System.out.println("比a+2大");break;
}
循环结构:
循环结构分两大类,一类是当型,一类是直到型。
while循环,再循环刚开始时,会计算一次布尔表达式的值,若条件为真,则执行循环体,而对于后来的每一次额外的循环,都会在开始前重新计算一次,并且语句中应有使循环趋于结束的语句,否则会出现死循环。
测试代码:
//用while循环算1-100累加和
int a=1;
int sum =0;
while(a<=100){
sum+=a;
a++;//如果没有则会变成死循环,a的值一直小于100
}
System.out.println(sum);
System.out.println("#############");
//for循环测试
sum=0;
for(a=1;a<=100;a++){//for(;;)这种情况程序不停一直执行
sum+=a;
}
System.out.println(sum);
do-while循环:do-while循环会先执行一次循环体,然后再判断布尔表达式的值,若条件为真则执行循环体,若条件为假则结束循环,do-while循环至少执行一次。
do-while与while循环的区别:do-while先执行后判断,while循环先判断后执行。
for循环:
for循环语句是支持迭代的一种通用结构是最有效的一种循环结构。
执行顺序:1、执行初始化语句:a=1 2、判断a<=100 3、执行循环体 4、步进迭代a++ 5、回到第二步继续判断
嵌套循环:在循环语句内部在嵌套一个或者多个循环。
练习测试代码:
//嵌套循环
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
System.out.print(i);
}
System.out.println();//ln换行
}
System.out.println("#############");
//九九乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
//分别计算100以内奇数和偶数的和
int sum1=0;
int sum2=0;
for (int i=1;i<=100;i++){
if(i%2==0){
sum2+=i;
}else{
sum1+=i;
}
}
System.out.println("奇数和为"+sum1+"偶数和为:"+sum2);
//输出100以内能被五整除,五个一行输出
for(int j=1;j<=100;j++){
if(j%5==0){
System.out.print(j+"\t");
}
if (j%25==0){
System.out.println();
}
}
break和continue:
在任何循环语句的主体部分,均可用break控制循环流程,break用于强行退出循环,不执行循环中剩余语句。
continue语句再循环中,用于终止某次循环过程,即跳过循环体中尚未执行的语句接着进行下一次循环是否执行的判定。
标签break和continue:标签是指后面跟一个冒号的标识符,而在循环前设置标签的理由是,我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随着标签使用,他们就会中断到存在标签的地方。
测试代码:
//测试break
int t =0;
System.out.println("开始");
while(true){
t++;
int i=(int)Math.round(100*Math.random());
System.out.println(i);
if(i==67){
break;
}
}
System.out.println("结束,用了"+t+"次");
//测试continue,100-150之间不能被3整除,五个一行输出
System.out.println("%%%%%%%%%%%%%%");
int z=0;
for(int j=100;j<150;j++){
if(j%3==0){
continue;
}
z++;
System.out.print(j+"\t");
if(z%5==0){
System.out.println();
}
}
System.out.println("%%%%%%%%%%%%");
//标签break及continue
out:for (int a=101;a<150;a++){
for(int b=2;b