第三章Java流程控制3.1语句及程序结构3.2顺序结构3.3选择结构3.4循环结构3.5跳转语句3.1语句及程序结构语句用来向计算机系统发出操作指令。程序由一系列语句组成。①表达式语句表达式;如:total=math+phys+chem;②空语句;③复合语句用“{}”将多条语句括起来,在语法上作为1条语句使用。如:{z=x+y;t=z/10;}④方法调用语句方法名(参数);如:System.out.println(“JavaLanguage”);⑤控制语句完成一定的控制功能,包括选择语句、循环语句和转移语句。如:break;3.2顺序结构顺序结构是最简单的一种程序结构,程序按照语句的书写次序顺序执行。例:计算太阳和地球之间的万有引力publicclassForce{publicstaticvoidmain(Stringargs[]){doubleg,mSun,mEarth,f;g=6.66667E-8;mSun=1.987E33;mEarth=5.975E27;f=g*mSun*mEarth/(1.495E13*1.495E13);System.out.println(Theforceis+f);}}程序运行结果如下:Theforceis3.5413E27例:华氏温度转换为摄氏温度摄氏温度c和华氏温度f之间的关系为:c=5(F-32)/9publicclassConversion{publicstaticvoidmain(Stringargs[]){floatf,c;f=70.0f;c=5*(f-32)/9;System.out.println(Fahrenheit=+f);System.out.println(Centigrade=+c);}}程序运行结果如下:Fahrenheit=70.0Centigrade=21.11111例:求解方程ax+b=0的根xpublicclassRoot{publicstaticvoidmain(Stringargs[]){floata,b,x;a=Float.parseFloat(args[0]);b=Float.parseFloat(args[1]);x=-b/a;System.out.println(a=+a);System.out.println(b=+b);System.out.println(x=+x);}}如果在命令行键入:javaRoot2.06.0运行程序。2.0和6.0分别作为第1和第2个参数传递给args[0]和args[1]。屏幕输出结果如下:a=2.0b=6.0x=-3.03.3选择结构Java语句提供了两条基本的分支选择语句if和switch。if语句应用在“二选一”的条件下,而switch语句应用在“多选一”的条件下。它们都是对条件表达式进行判断,针对不同的结果,决定转向要执行的Java语句。1if语句if(布尔表达式)语句if(布尔表达式)语句1else语句2布尔表达式语句truefalse布尔表达式语句2falsetrue语句1例:通过命令行输入2个整数,输出较小者publicclassMinNum{publicstaticvoidmain(Stringargs[]){intx,y,min;x=Integer.parseInt(args[0]);x=Integer.parseInt(args[1]);if(xy)min=x;elsemin=y;System.out.println(x=+x);System.out.println(y=+y);System.out.println(min=+min);}}例:求解方程ax+b=0(a≠0)的根publicclassRoot{publicstaticvoidmain(Stringargs[]){floata,b,x;a=Float.parseFloat(args[0]);b=Float.parseFloat(args[1]);if(Math.abs(a)0.000001f){x=-b/a;System.out.println(x=+x);}}}if语句嵌套if语句中可以包含if语句,形成if语句的嵌套。if(布尔表达式1)语句1elseif(布尔表达式2)语句2…elseif(布尔表达式n)语句n例:编写x,y函数关系。publicclassFunction{publicstaticvoidmain(Stringargs[]){floatx,y;x=Float.parseFloat(args[0]);if(x0)y=0;elseif(x0&&x=10)y=x;elseif(x10&&x=20)y=10;elsey=-0.5*x+20;System.out.println(x=+x);System.out.println(y=+y);}}xyx000x=10x10x=201020x0.5x+202Switch语句switch(表达式){case值1:语句块1;break;case值2:语句块2;break;………case值n:语句块n;break;default:语句块n+1;}例:通过命令行输入1~12之间的1个整数,输出相应月份的英文单词publicclassMonth1{publicstaticvoidmain(Stringargs[]){shortmonth;month=Short.parseShort(args[0]);switch(month){case1:System.out.println(“January”);break;case2:System.out.println(“February”);break;case3:System.out.println(“March”);break;case4:System.out.println(“April”);break;case5:System.out.println(“May”);break;case6:System.out.println(“June”);break;case7:System.out.println(“July”);break;case8:System.out.println(“August”);break;case9:System.out.println(“September”);break;case10:System.out.println(“October”);break;case11:System.out.println(“November”);break;case12:System.out.println(“December”);}}}例:将百分制成绩转化为优秀、良好、中等、及格和不及格的5级制成绩。标准为:优秀:90~100分;良好:80~89分;中等:70~79分;及格:60~69分;不及格:60分以下。publicclassLevel{publicstaticvoidmain(Stringargs[]){shortnewGrade,grade;grade=Short.parseShort(args[0]);switch(grade/10){case10:case9:newGrade=1;break;case8:newGrade=2;break;case7:newGrade=3;break;case6:newGrade=4;break;default:newGrade=5;}System.out.print(grade);switch(newGrade){case1:System.out.println(,优秀);break;case2:System.out.println(,良好);break;case3:System.out.println(,中等);break;case4:System.out.println(,及格);break;case5:System.out.println(,不及格);}}}3.4循环结构循环语句的作用是在一定条件下,反复执行一段程序代码,被反复执行的程序称为循环体。Java提供的循环语句有:while语句、do…while语句和for语句。while语句while(布尔表达式){循环体}☞含义:当布尔表达式为true时,重复执行循环体。truefalse布尔表达式?循环体例:计算10!publicclassFactorial{publicstaticvoidmain(Stringargs[]){inti;doubles;i=1;s=1;while(i=10){s=s*i;i=i+1;}System.out.println(10!=+s);}}do……while语句do{循环体}while(布尔表达式);☞含义:重复执行循环体,直到布尔表达式为false。true循环体布尔表达式?false例:计算1+3+5+…+99publicclassSum1{publicstaticvoidmain(Stringargs[]){inti=1,s=0;do{s=s+i;i=i+2;}while(i100);System.out.println(sum=+s);}}例:计算1~50之间的奇数和与偶数和publicclassSum2{publicstaticvoidmain(Stringargs[]){inti,oddSum,evenSum;i=1;oddSum=0;evenSum=0;do{if(i%2==0)//如果i是偶数evenSum+=i;//求偶数和else//如果i是奇数oddSum+=i;//求奇数和i++;}while(i=50);//判断i的值是否在1~50之间System.out.println(Oddsum=+oddSum);System.out.println(Evensum=+evenSum);}}for语句for(表达式1;表达式2;表达式3){循环体}表达式1:循环初值;表达式2:布尔表达式,判断循环是否继续;表达式3:修改循环变量值。true表达式1表达式2表达式3false循环体例:计算1~100之间的和publicclassSum3{publicstaticvoidmain(Stringargs[]){inti,s=0;for(i=1;i=100;i++)s+=i;System.out.println(sum=+s);}}例:求Fibonacci数列中的前20项。publicclassFibonacci{publicstaticvoidmain(Stringargs[]){longf1=1,f2=1;for(inti=1;i=10;i++){System.out.print(f1++f2+);f1=f1+f2;f2=f1+f2;}}}例:判断素数素数是指除1及自身外,不能被其它数整除的自然数。对于一个自然数k,需要使用2~k-1之间的每个整数进行测试,如果不能找到一个整数i,使k能被i整除,则k是素数;如果能找到某个整数i,使k能被i整除,则k不是素数。publicclassPrime{publicstaticvoidmain(Stringargs[]){shorti,k;k=Short.parseShort(args[0]);for(i=2;i=k-1;i++)if(k%i==0)break;if(i==k)System.out.println(k+isaprime.);elseSystem.out.println(k+isnotaprime.);}}多重循环例如:for(;;)//外循环开始{….for(;;)//内循环开始{……}//内循环结束while(condition)//内循环开始{…….}//内循环结束}//外循环结束例:计算输出1!、2!、…、5!以及它们的和publicclassFactorials{publicstaticvoidmain(Stringargs[]){inti,j;lon