java 流程控制
三种流程控制:
- 顺序执行(java 代码从上到下依次执行)
- 分支选择(根据条件判断,有选择的执行某些代码,有选择的跳过某些代码)
- 循环:反复的执行某些代码
if
if语句是单分支选择
- 语法
if(条件表达式){
//代码块
}
- 练习
import java.util.Random;
public class Test{
public static void main (String[] args){
final int MIN=10;
final char MAX=20;
char r1=(int)(Math.random()*(MAX-MIN)+MIN);
char r2=(int)(Math.random()*(MAX-MIN)+MIN);
System.out.println("随机数"+r1);
System.out.println("随机数"+r2);
int max=0;
if(r1>r2){
max=r1;
}
System.out.println("最大值"+max);
}
}
if —else
双分支选择
- 语法
if(条件表达式){
//代码块
}else{
//代码块
}
- 练习1
import java.util.Random;
public class Test{
public static void main (String[] args){
final int MIN=10;
final char MAX=20;
char r1=(int)(Math.random()*(MAX-MIN)+MIN);
char r2=(int)(Math.random()*(MAX-MIN)+MIN);
System.out.println("随机数"+r1);
System.out.println("随机数"+r2);
if(r1>r2){
System.out.println("最大值"+r1);
}else{
System.out.println("最大值"+r2);
}
}
}
- 练习2:
- *需求:模拟一次 打斗,随机产生一个人的生命值hp(50,100) ,展示这个人的生命值,
- 然后再随机产生一个伤害值【30-60】,暴击率的概率为30%,产生1.5倍伤害*,打印伤害值
- 如果出现暴击的话,要提示,然后根据此次的伤害和生命值判定最后人是否被over,如果没有over输出剩余血量
import java.util.Random;
public class Test{
public static void main(String[] args){
//定义随机生命值
final int MIN_HP=50,MAX_HP=101;
int hp=(int)(Math.random()*(MAX_HP-MIN_HP)+MIN_HP);
//输出当前人物血量
System.out.println("当前血量为 :"+hp);
//定义随机产生的伤害
final int MIN_DAM=30,MAX_DAM=61;
//定义暴击lv
final double CRITICAL_PERCENT=0.3;
//定义暴击伤害
final double CRITICAL_DAM=1.5;
//暴击伤害值
double damage=(int)(Math.random()*(MAX_DAM-MIN_DAM)+MIN_DAM);
//是否产生暴击
boolean isCritical=false;
if (Math.random()<=CRITICAL_PERCENT){
isCritical=true;
}
if(isCritical){
damage *= CRITICAL_DAM;
System.out.println("产生暴击伤害值"+damage);
hp-=damage;
if(hp<=0){
System.out.println("人物已死亡");
}else{
System.out.println("人物剩余血量"+hp);
}
}else{
//未产生暴击
System.out.println("未产生暴击伤害"+damage);
hp-=damage;
if(hp<=0){
System.out.println("人物已死亡");
}else{
System.out.println("人物剩余血量"+hp);
}
}
}
}
if–elseif --else
多分支选择语句
- 语法
if(条件表达式){
//代码块
}else if(){
//代码块
......
}else{
//代码块
}
- 练习 :成绩等级评级
switch
多分支选择语句
- 语法
switch(表达式){
case 常量表达式:
//代码块-1
break;
case 常量表达式:
//代码块-2
break;
case 常量表达式:
//代码块-3
break;
default:
//代码块-4
break;
}
解释:
**表达式:可以是 一个简单变量操作数,或者是一个变量的表达式
表达式的返回的类型:byte ,short, int, String char, enum **
注意:
case 的数量没有任何的限制,每个case后面的表达式的返回值必须是独一无二的。不能和其他的case值相等
在 switch 语句中,一旦执行了某一个case 中的代码块,那么就不再进行任何case的比较,后续的代码将顺序执行,直到遇到了break,或者Switch 的末尾整个switch才结束。
default可以省略看具体需求