选择结构
流程控制 : 就是用来控制程序中各语句的执行顺序
1.基本if选择结构
if(条件){
代码块(满足if条件的代码块)
}
1.1) . if else 选择分枝结构
// if-else 分支选择结构 (互斥)
// 条件成立后执行的代码 如果只有一行 可以不加{} 但是规范!!!!必须加上{}!!!
if(zhangScore > 90) {
System.out.println(“奖励iPhone xs”);
System.out.println(“奖励兰博基尼!”);
}else { // else 否则
System.out.println(“奖励你一个飞鞋!”);
}
/if(zhangScore <= 90) {
System.out.println(“奖励你一个飞鞋!”);
}/
System.out.print(“程序结束!”);
/**
- 需求:键盘录入的登录
- @author Charles
*
*/
public class Demo1 {
public static void main(String[] args) {
// 1.声明键盘录入
Scanner input = new Scanner(System.in);
// 2.使用
System.out.print("请输入您的用户名:");
String username = input.next();
System.out.print("请输入您的密码:");
String password = input.next();
// 假定用户名:admin 密码:123456
// if("admin" == username) Java中判断字符串相等不能使用== 字符串是个引用数据类型
/*if("admin".equals(username) && "123456".equals(password)) { // equals()用来判断字符串内容是否相等
}*/
/*if(username.equals("admin") && password.equals("123456")) {
System.out.println("登录成功!欢迎您!");
}else {
System.out.println("用户名或密码错误!");
}*/
// 加上! 可以获取指定的结果的相反条件
if(!(username.equals("admin") && password.equals("123456"))) {
System.out.println("用户名或密码错误!");
}else {
System.out.println("登录成功!欢迎您!");
}
}
}
1.2)多重if
if(条件){
代码块1
}else if{
代码块2
}
[else if对前一个的否定]()
1)顺序自上而下
2)只要上方有一个条件成立,下面的条件不在判断
所以越容易的表达式就越应放在上方
3)多重if可以有多个else if 但else if 不可单独存在
4)多重 if 可以结合 else 使用 也可省略
1.3) . 嵌套if选择结构
**需求:**乘坐地铁,先安检,如果你携带的刀具超过9cm,那么不允许进站!如果没有超过,进站需要刷票,如果有票进站,没票需要买票。
public class Demo5 {
public static void main(String[] args) {
// 1.声明变量存储刀具的长度
int lengthOfKnife = 10;
// 2.声明变量存储是否有票
int hasTicket = 1; // 0 表示无票 1表示有票
// 嵌套if一般不会超过3层 如果超过三层 基本可以考虑换方案
if(lengthOfKnife < 9) {
System.out.println("安检通过!");
if(hasTicket == 1) {
System.out.println("可以乘车!");
}else {
System.out.println("余额不足!嘟嘟嘟嘟...");
}
}else {
System.out.println("带走!怎么哪都有你!");
}
}
}
2.switch选择结构
[条件判断必须为等值运算]()
switch(表达式){
case 1 :
语句
break;
case 2 :
语句
break;
default :
break;
}
switch 接受 int 类型 和String类型的的表达式
[如果字符串中大写字母等于小写字母(不区分大小写)]()
用[equalsIgnoreCase]()
例 : String strl = “A”;
strl equals Ignore Case (“a”);
switch选择结构注意事项:
-
switch支持的数据类型有:byte short int char String(JDK1.7之后才支持String) Enum (byte和short因为可以自动类型转换为int)
char类型和ASCII码表有关系,所以也支持。
// char类型有些特殊 它可以将字符转换为对应的ASCII码值
// a:97 b:98…
// A:65 …
char alpha1 = ‘a’;
alpha1 --; // 如果采用自增自减 那么结果还是char类型
System.out.println(alpha1);
// System.out.println(alpha1+10); // 如果是进行计算 那么结果是ASCII码值进行计 算得到数值-
1. Switch只能做等值判断 2. 每一个case后必须写上break(规范) 如果你不写,可能发生`case的穿透性`:会一直往下执行,直到找到下一个break截止。 case穿透性有时候有些特殊用处:
public class Demo3 {
public static void main(String[] args) {// 需求:如果是星期一到星期五 好好学习 // 如果是周末 则好好休息 // 存储当前是星期几 int dayOfWeek = 3; /*if(dayOfWeek >= 1 && dayOfWeek <= 5) { }*/ switch(dayOfWeek) { case 1: case 2: case 3: case 4: case 5: System.out.println("好好学习!"); break; case 6: case 7: System.out.println("好好休息!"); break; default: System.out.println("没有该星期!"); break; }
}
} -
-
和多重if的区别:
- switch语法更加清晰,简洁
- switch只能支持等值判断,多重if可以支持范围判断。
- switch性能要比if快一些。
3.随机生成
Math.random(); 为double 类型 double 变量名 = Math.random();
随机生成[0.0-1.0)的小数(包含0.0不包含1.0)
想换成 int 类型的整数可以强转 *10
例 : int run = (int)Math.random();*10
想要生成max到min的数
Math.random*(max-min)+min