JAVA的流程控制
一、流程控制的概念
在没有流程控制之前,代码的执行顺序是//依次自上至下,从左往右执行。流程控制在一定的程度上,改变代码的执行顺序,跳过部分代码或重复部分代码都是流程控制的作用。
二、流程控制的分类
流程控制主要分为分支及循环两大类。
2.1、分支
就是遇到你某个条件成立,那么就可以选择一个分支去执行,当然也可以认为某些条件不成立,就选择或者跳过一个分支去执行。
2.1.1 if
if 分支的代码格式为:
if (boolean) { //如果条件为真、则执行以下代码块。
code // 待执行的代码块区域。
}
//例如
if(100>=n&n>=90){
System.out.println("优秀");
}
if(90>n&n>=80){
System.out.println("良");
}
if(80>n&n>=70){
System.out.println("中");
}
if(70>n&n>=60){
System.out.println("差");
}
if(60>n&n>=0){
System.out.println("不及格");
}
}
else{
System.out.println("异常");
}
注意大括号实际是可以省略不写的的,JAVA默认下一行即为条件为真要执行的代码快,一般情况下需养成写上的习惯,避免出错。
2.1.2 if else
else 一般与if搭配使用。
if(100>=n&n>=90){
System.out.println("优秀");
}
else if(90>n&n>=80){
System.out.println("良");
}
else if(80>n&n>=70){
System.out.println("中");
}
else if(70>n&n>=60){
System.out.println("差");
}
else if(60>n&n>=0){
System.out.println("不及格");
}
}
else{
System.out.println("异常");
}
2.1.3 switch
switch相当于指路牌一样,当条件符时,才执行对应的代码块,二不符合的代码块均不执行。其格式为:
case 目标值:
code
case 目标值:
code
case 目标值:
code
...
case 目标值:
code
default:
code
}
例子:
long a=2;
switch(a){ //此处的a为标识符
case 1:
System.out.println("a=1");
break;
case 2: //标识符的值与此处的2相等。则运行此处代码。
System.out.println("a=2");
case 3:
System.out.println("a=3");
break;
default:
System.out.println("woyevbuzhdao");
}
此处注意:标识符为变量,此处可作为变量的数据类型有:byte、short、int 、char、string。浮点型的double和float 、布尔型的boolean不能作为标识符的变量使用。
2.1.3、if、if else 、 switch的使用区别。
首先if 和if else 可以合称为 if 结构,与switch的主要区别为:数据离散可能用if ,但大概率用switch,连续区间一定用if。
if 和if else的区别主要为条件判断上,if()是并列关系,只要条件满足都会执行;if()…else()是互斥关系,条件满足条件执行if内的代码,不满足则执行else内代码;if ( ) else if( )
2.2、循环
2.2.1、for 循环
概念:当条件被满足的时候,重复执行某一个部分的代码。
for( 1;2;3){
4
} 大括号省之后,只能有一行命令。
执行顺序 1 2 4 3 2 4 3 2 4 3 直至2为flose。
上述代码解释:
1:初始化部分,给定初始值,可以省略。含义:只有在for循环第一次开始的时候,才会执行第一部分的代码。
2:条件判断部分,默认是必然成立的,每一次循环完成,准备下一次循环之前必然执行一遍2部分代码。
3:条件改变部分:每次循环的代码执行完成以后,先执行3部分的代码,来改变循环条件。
4:循环的代码块。
例子:
//100内(不含)的数字内,7的倍数跳过。
for (int a=0;a<=100;a++){
if (a%7==0){
System.out.println ("过");
}
else {
System.out.println(a);
};
}
2.2.2、while 循环
while循环代码格式:格式:while(boolean){code}`
int a=0;
int sum = 0;
while(a<100){
a++;
sum +=a;
}
代码解释:当判断(boolean)为真时则一直执行code中的代码块,直至boolean为假时,才跳出此次while循环。
2.2.3、for 和 while 使用区别
当知道循环结束的条件,但不知道要循环多少次时,用while循环。
当知道循环的次数,但是不知道循环的结束条件时,用for循环。
2.2.3、循环的跳出与终止
continue 本次循环停止,进行下一次循环。(在本次if满足条件之下执行本次循环)
break,停止当前循环后直接进入下一阶段。(本次及后续循环均不执行了)
if不响应braek、continue的终止或终端命令。
switch for ,响应break 。
三、流程控制的应用
3.1、斐波拉切数列
int array = new int[20] //创建一个20个int值的数组。
array[0]=0;
array[1]=1;
for (int i=2;i<array.length;i++){
array[i]=array[i-1]+array[i-2]
}
for(int i =0; i<array.length; i++){
System.out.println(array[i]);
}
3.2、冒泡排序
public class Maopao{
public static void main(String[] args){
int[] array ={3,6,9,5,6,4,};
for(int i = 0;i<array.length;i++){
for (int j =0;j<(array.length-i-1);j++) {
if (array[j]>array[j+1]){
int temp =array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for (int item: array){
System.out.print(item +" ");
}
}
}
3.3、直接排序
int[] array = {6,6,6,3,8,9,3,2,1,4,7,2};
for(int i = 0;i <array.length;i++){
//每一次循环都在确定第i个位置的最小值是谁。
for(int j =i; j<array.length;j++){
if (array[i]>array[j]){
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
System.out.println(array[i]+" ");
}
for (int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
3.4、选择排序
int[] array = {1,2,6,4,9,8,5};
for(int i = 0;i <array.length;i++){
int minIndex=i;
int minValue=array[i];
for (int j=i;j<array.length;j++){
if( minValue >array[j]){
minIndex=j;
minValue=array[j];
}
}
int temp = array[i];
array [i]= array[minIndex];
array[minIndex]=temp;
}
for (int item: array){
System.out.print(item+"");
}