流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。包含顺序结构、分支结构、循环结构。
顺序结构不必多说。
一.分支结构
if语句(单分支选择结构)
定义
if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句
使用案例
1.随机得到0-5之间的数,并判断是否大于2
public class Judge
{
public static void main(String[] args)
{
int r = (int)(Math.random()*10);
double PI = 3.14;
double area = PI * r * r;
double length = 2 * PI * r;
if(area >= length)
{
System.out.println("面积大于等于周长");
}
else
{
System.out.println("周长大于面积");
}
System.out.println("周长是"+length);
System.out.println("面积是"+area);
}
}
2.祝你好运
import java.util.Scanner;
public class AddCust
{
public static void main(String[] args)
{
System.out.println("信息录入系统");
System.out.println("添加用户信息");
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员ID<4位整数>");
String number = sc.nextLine();
System.out.println("请输入会员生日<年/月/日>");
String birthday = sc.nextLine();
System.out.println("请输入会员密码");
String score = sc.nextLine();
if(number.length()==4)
{
System.out.println("会员信息如下");
System.out.println(number+"\t"+birthday+"\t"+score);
}
else
{
System.out.println("会员号码输入错误,请输入4位整数");
}
}
}
if-else语句(双分支选择结构)
定义
当条件表达式为真时,执行语句块1,否则执行语句块2,也就是else部分
使用案例
面积与周长
public class Judge
{
public static void main(String[] args)
{
int r = (int)(Math.random()*10);
double PI = 3.14;
double area = PI * r * r;
double length = 2 * PI * r;
if(area >= length)
{
System.out.println("面积大于等于周长");
}
else
{
System.out.println("周长大于面积");
}
System.out.println("周长是"+length);
System.out.println("面积是"+area);
}
}
信息录入
import java.util.Scanner;
public class AddCust
{
public static void main(String[] args)
{
System.out.println("信息录入系统");
System.out.println("添加用户信息");
//创建Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员ID<4位整数>");
String number = sc.nextLine();
System.out.println("请输入会员生日<年/月/日>");
String birthday = sc.nextLine();
System.out.println("请输入会员密码");
String score = sc.nextLine();
if(number.length()==4)
{
System.out.println("会员信息如下");
System.out.println(number+"\t"+birthday+"\t"+score);
}
else
{
System.out.println("会员号码输入错误,请输入4位整数");
}
}
}
If-else if-else(多分支选择结构)
定义
逐条if语句进行判断,条件匹配进入语句体,否则对if语句继续匹配
使用案例
年纪怎么叫
public class AgeName
{
public static void main(String[] args)
{
int age = (int)(Math.random()*1000);
if(age<10)
{
System.out.println("儿童");
}
else if(age<20)
{
System.out.println("少年");
}
else if(age<30)
{
System.out.println("青年");
}
else if(age<50)
{
System.out.println("中年");
}
else if(age<120)
{
System.out.println("老年");
}
else
{
System.out.println("建国之后不准成精");
}
}
}
嵌套if的判断定义
if(条件1)
{
if(条件2)
{
//代码块1
}
else
{
//代码块2
}
}
else
{
//代码块3
}
使用案例
比赛
public class AgeName
{
public static void main(String[] args)
{
int time = (int)(Math.random()*40);
if(time<20)
{
System.out.println("入选");
String sex = ((int)(Math.random()*2))==0?"woman":"man";
if(sex=="woman")
{
System.out.println("进入女子组");
}else
{
System.out.println("进入男子组");
}
}
else
{
System.out.println("未入选");
}
}
}
switch多分支选择结构
定义
- 根据表达式值的不同执行许多不同的操作
- switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处、开始ak语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果有的话)
- 只能处理等值条件判断的情况,且表达式必须为byte,short,int或char类型 ,不能是String或double,float.1.7之后可以使用string
- 常量值必须是与表达式类型兼容的特定的一个常量
- 不允许有重复的case值
- default子句为可选
使用案例
元音辅音判断
char c = ‘a’;
int rand =(int) (Math.random()*26);
char c2 = (char)(c+rand);
System.out.print(c2 + “: ”);
switch (c2)
{
case ‘a’:
case ‘e’:
case ‘i’:
case ‘o’:
case ‘u’:
System.out.println(“元音”);
break;
case ‘y’:
case ‘w’:
System.out.println(“半元音”);
break;
default:
System.out.println(“辅音”);
}
二.循环结构
while循环
使用逻辑
- 在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
- 语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
包含
- 初始化:变量的初始化
- 条件判断:必须要求返回true或者false的值
- 循环体:具体的要执行的逻辑代码
- 迭代变量:促使此循环结束
案例
求100以内偶数和
public class Sum
{
public static void main(String[] args)
{
int i = 1;
int sum = 0;
while(i<=100)
{
if(i % 2 == 0)
{
sum+=i;
}
i++;
}
System.out.println("偶数和为"+sum);
}
}
do-while循环
与while循环类似,只不过while是先判断后执行;do-while是先执行后判断。
do-while至少执行一次
for循环
语法形式
for (初始表达式;布尔表达式;步进)
{
//循环体;
}
注意
- for循环在执行条件判断后,先执行程序部分,再执行步进。
- 在for诧句的初始化部分声明的变量,其作用域为整个for循环体
- “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作
- 如果三个部分都为空语句(分号不能省),相当于一个无限循环
三.break、continue和return
break:
改变程序控制流,用于do-while、while、for中时,可跳出循环而执行循环后面的语句
continue :
叧能用在循环里,continue 作用:跳过循环体中剩余的语句而执行下一次循环
return:
语句从当前方法退出,返回到调用该方法的语句处,并且从该语句的下条语句处继续执行程序。
返回语句的两种格式
- return expression
- 返回一个值给调用该方法的语句。
- 返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。
- return
- 当方法声明中用void声明返回类型为空时,应使用这种返回类型,它不返回任何值。
四.递归算法
定义
- 程序调用自身的编程技巧称为递归。
- 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。
递归问题的特点
- 一个问题可被分解为若干层简单的子问题
- 子问题和其上层问题的解决方案一致
- 外层问题的解决依赖于子问题的解决
组成
- 递归结束条件。什么时候不调用自身方法。如果没有条件,将陷入死循环。
- 递归体。什么时候需要调用自身方法。
递归的优点
简单的程序
递归的缺点
- 但是递归调用会占用大量的系统堆栈,内存耗用多,
- 在递归调用层次多时速度要比循环慢的多