2、流程控制

173 阅读3分钟

流程控制

顺序结构

判断结构

分支结构

循环结构

一、判断结构

关键字:if、else

格式:

// 1.单if结构
if(条件表达式){
 语句
 ...
}
// 判断条件表达式的结果,结果为true执行代码块中的语句,结果为false不执行
// 2.标准的if-else结构
if(条件表达式){
 语句a
}else{
 语句b
}
// 判断条件表达式的结果,结果为true执行if代码块中的语句a,结果为false执行else代码块中的语句b
// if代码块和else代码块一定会执行其中一个,并且也只会执行其中一个
// 3.多条件的if-else结构
if(条件表达式1){
 语句a
}else if(条件表达式2){
 语句b
}else if(条件表达式3){
 语句c
}
...
else{
 语句n
}
// 从上到下依次判断条件,条件的结果为true执行对应的代码块,执行完毕后if-else结构结束,条件的结果为false,继续判断下一个条件,如果没有任何一个条件结果为true,则执行最后一个else中的语句n
// 4.if-else的嵌套
if(){
 if(){
​
 }else(){
​
 }
}else if(){
 if(){
​
 }else(){
​
 }
}else if(){
 if(){
​
 }
}
// 无论是内层的if-else还是外层的if-else都遵循if-else结构执行逻辑

注:如果if或者else后没有{},那么if、else只能影响离它最近的一条语句

二、分支结构

关键字:switch、case、break、default

格式:

switch(表达式/值){
 case1:
     语句a
     break;
 case2:
     语句b
     break;
 case3:
     语句c
     break;
 ...
 default:
    语句n
     break;
}
// 计算表达式的值,将这个结果从上到下依次与每一个case后的值做比较,如果某一个case的值与表达式的结果相同则执行对应的语句,如果没有任何一个case后的值与表达式的结果相同则执行default后的语句

注:

  1. 每一个case后值必须唯一
  2. switch后表达式结果的类型只能是byte、short、int、char、String
  3. default不是必需的
  4. 每一个case和default的位置都是任意的
  5. break在switch-case结构中用于结束(跳出)整个结构,删除break会让整个switch-case结构具有穿透性

三、循环结构

关键字:while、do、for、break、continue

while循环

while(条件表达式){
    循环体   
}
// 判断条件表达式的结果,结果为true执行循环体,继续判断条件,条件的结果为true,执行循环体,再判断条件,直到条件表达式的结果为false,循环结束

do-while循环

do{
 循环体
}while(条件表达式);
// 先执行循环体,判断条件表达式的结果,结果为true执行循环体,继续判断条件,条件的结果为true,执行循环体,再判断条件,直到条件表达式的结果为false,循环结束

for循环

for(1初始化;2条件;3步进){
 4循环体
}
// 1243243243243...2

关键字break和continue

break:可以用在switch-case和循环结构中,作用是结束整个结构

continue:只能用在循环结构中,作用是结束当前这次循环继续下一次循环

死循环

// while的死循环
while(true){
​
}
​
// do-while的死循环
do{
​
}while(true);
​
// for的死循环
for(;;){
​
}

四、Random和Scanner

Random类:用于产生随机数

用法:

// 1.创建Random对象
Random r = new Random();
// 2.调用产生随机数的方法
// (1)生成一个int范围内的随机数
int num1 = r.nextInt();
// (2)生成指定范围内的随机数
int num2 = r.nextInt(int n);// [0,n-1]
// (3)生成[0,1)
double num3 = r.nextDouble();

Scanner类:用于接收键盘输入

用法:

// 1.创建Scanner
Scanner sc = new Scanner(System.in);
// 2.调用接收键盘输入的方法
// (1)接收键盘输入的字符串
String s = sc.next();
// (2)接收键盘输入的整数
int num = sc.nextInt();
// (3)接收键盘输入的小数
double n = sc.nextDouble();