选择结构
几乎所有的编程语言,在实现程序执行流程方面都提供了3种控制结构,分别是顺序,选择和循环。
1 顺序结构
按照代码的编排顺序,从上到下,依次执行。它是编写程序的顺序。
System.out.println("开门");
System.out.println("放大象");
System.out.println("关门");
2 IF 基本结构
语法: if( 条件 ){ 语句块 }
public static void main(String[] args){
// 创建对象
Scanner sc = new Scanner(System.in);
// 调用方法
System.out.println("输入你的年龄");
int age = sc.nextInt();
// 判断如果 成年可以 上网否则不行
if( age>18 ){
System.out.println("可以上网");
}
System.out.println("Over !!!!");
}
3 IF-ELSE 结构
语法: if( 条件 ){ 语句块A }else{ 语句块B }
public static void main(String[] args){
// 创建对象
Scanner sc = new Scanner(System.in);
// 调用方法
System.out.println("输入你的年龄");
int age = sc.nextInt();
// 判断如果 成年可以 上网否则不行
if( age>18 ){
System.out.println("可以上网");
}
else{
System.out.println("年龄不够");
}
System.out.println("Over !!!!");
}
4 IF-ELSE IF 结构
语法 :
if( 条件 ){
语句块A
}else if(条件){
语句块B
}else{
语句块C
}
public static void main(String[] args){
// 创建对象
Scanner sc = new Scanner(System.in);
System.out.println("输入成绩");
int score = sc.nextInt();
if( score<60 ){
System.out.println("不及格,差");
}else if( score<80 ){
System.out.println("及格,中");
}else if(score<90){
System.out.println("良好可以更进一步");
}else{
System.out.println("优秀");
}
System.out.println("over----");
}
5 IF 嵌套用法
有时候表示 条件递进关系,可以使用 IF 内部 套用 IF, 表示内层 IF 需要外层IF满足条件下才执行。
public static void main(String[] args){
// 创建对象
Scanner sc = new Scanner(System.in);
System.out.println("输入成绩");
int score = sc.nextInt();
//通过外层IF 排除不合法的输入成绩。
if( score>=0 && score<=100 ){
//合法的成绩
if( score<60 ){
System.out.println("不及格,差");
}else if( score<80 ){
System.out.println("及格,中");
}else if(score<90){
System.out.println("良好可以更进一步");
}else{
System.out.println("优秀");
}
}else{
//非法的成绩
System.out.println("输入错误");
}
System.out.println("over----");
}
综合案例:计算BMI值
class BMI{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("输入体重(kg)");
double weight = sc.nextDouble();
System.out.println("输入身高(cm)");
double height = sc.nextDouble();
height = height/100; // cm换算成m
//公式 weight/height^2
double bmi = weight / ( height*height);
//判断
if( bmi<=18.4){
System.out.println("偏瘦");
}else if( bmi>=18.5 && bmi<=23.9){
System.out.println("正常");
}else if( bmi>=24.0 && bmi<=27.9){
System.out.println("过重");
}else {
System.out.println("肥胖");
}
}
}
Switch 分支结构
语法:
switch( 变量 | 表达式 ){
case 值1: 语句 ;break;
...
case 值1: 语句 ;break;
[default : 语句 ;break;]
}
public class TestSwitch{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//退休生活
System.out.println("输入星期几");
String day = sc.next();
switch( day ){
case "星期一" :
System.out.println("钓鱼");
break;
case "星期二" :
System.out.println("打麻将");
break;
case "星期三" :
System.out.println("爬山");
break;
case "星期四" :
System.out.println("坝坝舞");
break;
case "星期五" :
System.out.println("洗脚");
break;
case "星期六" :
case "星期日" :
System.out.println("看电视");
break;
default :
System.out.println("错误Error");
}
System.out.println("gg");
}
}
说明:
- 程序执行switch语句,使用 变量或者表达式的值 与 每个case 比较,通过等值匹配后 则执行对应case的语句。
- 通常每个case 语句后都要 使用 break 来跳出 switch结构,如果没有则会出现case 穿透。
- default 是可以省略的,表示如果没有任何case 匹配上,则默认执行default 后的语句。
- switch 支持的 类型有 byte short int enum(枚举) String(JDK7开始)
Random 随机数
生成随机数的办法是
1.导包 Random
2. Random rd = new Random();
3. int num = rd.nextInt(n) n 表示范围 会生成0- (n-1)的整数。
import java.util.Random;
class TestRandom{
public static void main(String[] args){
// 随机数对象
Random sc = new Random();
// 生成随机数
int num = sc.nextInt( 3 );
// 使用
System.out.println(num);
}
}
局部变量与全局变量
- 局部变量: 定义在方法内部,在方法中有效。
- 全局变量: 定义方法外的变量,可以在多个方法中使用。
- 如果全局变量和局部变量有重名,方法内部优先使用局部变量。
- 同一个作用域变量不可以重名。
public class LocalVariable{
//定义全局变量
static int num=120;
static int age=110;
public static void main(String[] args){
//定义局部变量
int age = 10;
System.out.println(age);//局部:10
if(1>0){
System.out.println(age); //可以使用 局部:10
}
}
//其他方法
public static void xx(String[] args){
//System.out.println(age); //报错可使用
System.out.println(num); //正确
}
}