首先,在控制流程中我们最先接触到的就是条件语句,其后是循环语句;
1.if条件语句,java中的条件语句和我们平时语言中的“如果...那么”的形式很相近,举一个简单的例子来说:如果明天下雨,那么我们的运动会就临时取消;用代码的方式书写下来就是:
public class Item {
public static void main(String[] args) {
if(true) {//true代表明天下雨的事情发生
System.out.println("运动会取消");
}
}
}
另外,我们平时用到的if语句中,有if...else,if...else if...else;当第一个if后面的条件不满足的时候,会依次像后面去寻找自己所需要的条件,直到匹配,则运行对应的语句。
public class Test{
public static void main(String[] args){
System.out.println("请输入体重:");
double weight = sc.nextDouble();
System.out.println("请输入身高:");
double heigth = sc.nextDouble();
double bmi = weight/(heigth*heigth);
if(bmi<18.5) {
System.out.println("体重过轻");
}else if(bmi<24){
System.out.println("正常范围");
}
else if(bmi<27){
System.out.println("体重过重");
}
else if(bmi<30){
System.out.println("轻度肥胖");
}
else if(bmi<35){
System.out.println("中度肥胖");
}else {
System.out.println("过度肥胖");
}
}
}
其后就是switch,switch语句,其实就是if...else的另外一种表现形式,我们需要 明确switch可以实现和if一样的功能
switch的格式:switch() case: break;如下面实例:
//缺少主方法和Scanner函数;
int month = sc.nextInt();
switch (month) {
case 1:
case 2:
case 3:
System.out.println("春天");
break;
case 4:
case 5:
case 6:
System.out.println("夏天");
break;
case 7:
case 8:
case 9:
System.out.println("秋天");
break;
case 10:
case 11:
case 12:
System.out.println("冬天");
break;
}//根据所输入的月份,判断输入的季节;
Switch需要注意的几点问题是:首先每一个表达式结束后都应该有一个break;在switch(num)括号中的参数可以是几种不同的数据类型,如:byte,short,int,String,枚举类型;(String是在java1.7之后才开始支持的,实现原理是把String转化为hash值,其实还是整数);
关于java中的循环语句,如果你想实现从1加到100求和,那么需要一个一个的加吗?在这里循环语句中的while,do...while以及for循环就可以实现,如下例:
public class Test {
public static void main(String[] args) {
//用三种循环方式实现1加到100;
int sum=0, i=1;
/*for(int i=1;i<101;i++) {//第一种方式
sum = sum1+i;
}
System.out.println("1+2+3..+99+100="+sum);*/
/*while(i<101) {
sum +=i;
i++;
}*/
do {
sum +=i;
i++;
}while(i<101);
System.out.println("1+2+3..+99+100="+sum);
}
}
do...while和while的区别是:while是先进行性判断再执行,do...while是先执行一次,再进行判断,至少会被执行一次;
另一种用在循环语句 中最多的就是for语句啦,for的格式是:
for(初始值表达式;循环控制表达式;增值表达式)
执行的顺序分别是先执行初始值表达式,若果满足循环控制表达式,那么就执行下面的语句,等到下面的语句都执行完毕后,在执行后面的增值表达式,此时再从初始值表达式往后面执行;下面我们来看一个简单的例子:
public class Item {
public static void main(String[] args) {
int sum=0;//定义一个sum,用来存放累加的值
for(int i=1;i<101;i++) {//先把1给i,i<101满足条件,执行sum=sum+i,之后再执行i++;此时i=2再判断i<101后面一直按着这个顺序执行
sum = sum+i;
}
System.out.println("1+2+3..+99+100="+sum);
}
}
当然,在对于for语句的使用过程中,我们最常会见到break和continue这两个词,那么他们两个有什么意义呢?
对于continue来说,如果程序的执行过程中执行到了这条语句,那么就相当于要跳出这次循环,后面的语句都不会再去执行,直接去开始下次的循环去执行;如下面的例子:
public class Item {
public static void main(String[] args) {
for(int i=1;i<10;i++) {
if(i%2==0) {
continue;//当i%2为0时,continue后面的语句都不会再执行,本次循环退出
}
System.out.print(i+"\t");
}
}
}
//输出结果是:1 3 5 7 9
对于break而言,它和continue最大的不同就是结束循环的范围不同,break语句执行完之后,直接结束的是本层循环;例如:
public class Item {
public static void main(String[] args) {
for(int i=1;i<10;i++) {
if(i%2==0) {
break;//当i%2为0时,break后面的语句都不会再执行,本层循环直接退出
}
System.out.print(i+"\t");
}
}
}/
break结束的是内层循环,如果我想要结束外层想要结束的那一层循环该怎么办呢,这时候就可以通过设置一个标签来实现
public class Item {
public static void main(String[] args) {
for(int i=1;i<10;i++) {
for(int j=1;j<10;j++) {
System.out.print(i+":"+j+"\t");
if(j%2==0) {
break ;
}
}
System.out.println();
}
}
}//输出结果:1:1 1:2 2:1 2:2 3:1 3:2 4:1 4:2 5:1 5:2 6:1 6:2 7:1 7:2 8:1 8:2 9:1 9:2
public class Item {
public static void main(String[] args) {
labal:for(int i=1;i<10;i++) {
for(int j=1;j<10;j++) {
System.out.print(i+":"+j+"\t");
if(j%2==0) {
break labal;
}
}
System.out.println();
}
}
}//输出结果:1:1 1:2
通过设置label,使break结束的位置更加的灵活,可以实现想要结束的任何一层想要结束的位置;