Java SE 第一部分 语法基础篇 第3章 流程控制语句(3.1-3.5)if条件语句 switch分支语句 for循环语句 while循环语句 break、continue跳转语句

3章 流程控制语句

 

3.1 if条件语句

单分支if语句

...CodeA 
if (布尔表达式) { 
    语句组; 
}
...CodeB

判断一个点是否在圆里面Demo26

import java.util.Scanner;
public class Demo26{
    /*
    数据:点坐标x y 圆心坐标0 0 半径10 点到圆心距离distanc 
    */
    public static void main(String[] args){
        //1.提示用户输入一个点坐标
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a point:");
        double x = input.nextDouble();
        double y = input.nextDouble();
        
        double ox = 0;
        double oy = 0;
        double rad = 10;
        //2.计算点到圆心距离
        double distance = Math.sqrt(Math.pow(x - ox, 2) + Math.pow(y - oy , 2));
        //3.计算距离与半径的大小关系
        if(distance > rad) {
            System.out.println("Point ("+ x + "," + y + ") is not");
        }else{
            System.out.println("Point ("+ x + "," + y + ") is in ");

        }
        System.out.println("not");
    }
}

多分支if-else-if语句

...CodeA 
if (布尔表达式1) { 
    语句组A; 
} else if (布尔表达式2) { 
    语句组B; 
} else if (布尔表达式3) { 
    语句组C; 
} else { 
    语句组D; 
}
...CodeB

Demo17BMI指数计算

import java.util.Scanner;
public class Demo17{
    public static void main(String[] args){
        //1.输入以千克为单位的体重 以米为单位的身高
        Scanner input = new Scanner(System.in);
        System.out.print("Enter weight(kg) and height(m):");
        double weight = input.nextDouble();
        double height = input.nextDouble();

        //2.计算BMI
        double BMI = weight / height / height;

        //3.对BMI进行分类
        if (BMI < 18.5) {
            System.out.println("偏瘦");
        } else if (BMI < 25.0) {
            System.out.println("正常");
        } else if (BMI < 30.0) {
            System.out.println("超重");
        } else {
            System.out.println("过胖");
        }
    }
}

3.2 switch分支语句

if分支语句一样,都是对条件的判断。switch一般用在条件较多的情况下,但是有一个重要的细节

及时,if语言可以对区间值或固定值进行判断,switch只能对固定值进行判断。

switch (变量) { 
    case 值1:      //if (变量==值1) {语句组A;} 
        语句组A; 
        break; 
    case 值2: 
        语句组B;
        break; 
        ... 
    case 值n:     //if (变量==值n) {语句组N;} 
        语句组N; 
    default:     // else {语句组N+1;} 
        语句组N+1; 
        break; 
}

switch的一些使用细节

  • switch所传入的变量,charbyteshortintString或者枚举类型
  • 1,值2,一直到值n,这几个值必须是同一个数据类型的
  • 当变量匹配的相关case的值的时候,执行case中的语句,直到遇到break结束;如果该case语句中没有break,则继续向下执行,直到遇到另外一个break结束
public class Sample { 
    public static void main(String[] args) { 
        int a = 3; 
        switch (a) { 
        case 1: 
            System.out.println("case 1"); 
            break; 
        case 2: 
            System.out.println("case 2"); 
            break; 
        case 3: 
            System.out.println("case 3"); 
        case 4: 
            System.out.println("case 4"); 
        case 5: 
            System.out.println("case 5"); 
            break; 
        default : 
            System.out.println("default"); 
            break; 
        } 
    } 
}

输入一个年份,来判断该年的属相是什么?

import java.util.Scanner; 
public class Sample { 
    public static void main(String[] args) { 
        /*
        2020 % 12 = 4 鼠年 
        2021 % 12 = 5 牛年 
        2032 % 12 = 4 鼠年 
        0  1  2  3  4  5  6  7  8  9 10 11 
        猴 鸡 狗 猪 鼠 牛 虎 兔 龙 蛇 马 羊 
        */
        Scanner input = new Scanner(System.in); 
        System.out.print("请输入年份:"); 
        int year = input.nextInt(); 
        int choice = year % 12; 
        switch (choice) { 
            case 0: 
                System.out.println("猴年");
                break; 
            case 1: 
                System.out.println("鸡年"); 
                break; 
            case 2: 
                System.out.println("狗年"); 
                break; 
            case 3: 
                System.out.println("猪年"); 
                break; 
            case 4: 
                System.out.println("鼠年"); 
                break; 
            case 5: 
                System.out.println("牛年"); 
                break; 
            case 6: 
                System.out.println("虎年"); 
                break; 
            case 7: 
                System.out.println("兔年"); 
                break; 
            case 8: 
                System.out.println("龙年"); 
                break; 
            case 9: 
                System.out.println("蛇年"); 
                break; 
            case 10: 
                System.out.println("马年"); 
                break; 
            case 11: 
                System.out.println("羊年"); 
                break; 
        } 
    } 
}

3.3 for循环语句

循环主要解决具有规律性的且具有重复性的代码问题,避免程序冗余

//将一个数字所有位数拆开 相加 
//number = 123 
number % 10 = 3 
number /= 10 12 
number % 10 = 2 
number /= 10 1 
number % 10 = 1 
number /=10 0

循环四要素

  • 1循环的初始化:循环的第1次执行从哪里开始
  • 2循环的继续条件:循环从当前轮是否向后执行下一轮
  • 3循环体:需要被循环执行的部分
  • 4循环的步长、周期:当前循环到下一轮循环之间的变化

我们常见的循环问题可以分为两大类:

  • 已知循环次数的 一般用for语句做
  • 未知循环次数但是已知循环结束条件 一般用while语句做

for (1循环的初始化;2.循环的继续条件;4.循环的步长) {  
    3.循环体 
}
1-2-3-4-2-3-4-2-3-4-2不满足则结束循环

for循环演示

public class homework {
    public static void main(String[] args) {
        /*
            *****
        */
        for (int i = 1; i <= 5; i++) {
            System.out.print("*");
        }
        System.out.println();

        System.out.println("=============================");
        /*
            *****
            *****
            *****
            *****
        */
        for (int j = 1; j <= 4; j++) {
            for (int i = 1; i <= 5; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("=============================");
        /*
            *
            **
            ***
            ****
            *****
            ******
            *******
        */
        for (int line = 1; line <= 7; line++) {
            for (int i = 1; i <= line; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("=============================");
        /*
            ******
            *****
            ****
            ***
            **
            *
        */
        for (int line = 6; line >= 1; line--) {
            for (int i = 1; i <= line; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("=============================");
        /*          i   j
            *       1   1
            **      2   1 2
            ***     3   1 2 3
            ****    4   1 2 3 4
            *****   5   1 2 3 4 5
            ******  6   1 2 3 4 5 6  j <= i
            *****   7   1 2 3 4 5
            ****    8   1 2 3 4
            ***     9   1 2 3
            **      10  1 2
            *       11  1            j <= 12 - i
            j <= i && j <= 12 - i
        */
        for (int i = 1; i <= 11; i++) {
            for (int j = 1; j <= i && j <= 12 - i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println("=============================");
        /*              i  |i - 6|
                 *      1   -5
                **      2   -4
               ***      3   -3
              ****      4   -2
             *****      5   -1
            ******      6   0
             *****      7   1
              ****      8   2
               ***      9   3
                **      10  4
                 *      11  5
        */
        for (int i = 1; i <= 11; i++) {
            for (int k = 1; k <= Math.abs(i - 6); k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i && j <= 12 - i; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
        System.out.println("=============================");
        /*              j
             *               1
            * *             1 2
           *   *           1 2 3
          *     *         1 2 3 4
         *       *       1 2 3 4 5
        *         *     1 2 3 4 5 6
         *       *       1 2 3 4 5
          *     *         1 2 3 4
           *   *           1 2 3
            * *             1 2
             *               1
             j == 1  j == i  j + i == 12
        */
        for (int i = 1; i <= 11; i++) {
            for (int k = 1; k <= Math.abs(i - 6); k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i && j <= 12 - i; j++) {
                if (j == 1 || j == i || j + i == 12) {
                    System.out.print("* ");
                } else {
                    System.out.print("  ");
                }
            }
            System.out.println();
        }
    }
}

3.4 while循环语句

while循环主要用于解决循环次数未知,但循环结束条件已知的情况。

while其实和for循环是可以相互转换的,是因为都逃不开循环四要素:

for (int i = 1; i <= 5; i++) {  
    System.out.println(i); 
}
可以转换为while循环 
int i = 1; 
while (i <= 5) { 
    System.out.println(i); 
    i++; 
}

while的语法格式

1.循环的初始化
while (2.循环继续条件) { 
    3.循环体 
    4.循环的步长、周期 
}

数字拆分求和

import java.util.Scanner; 
public class Sample { 
    public static void main(String[] args) { 
        //1.输入一个未知长度的数字
        Scanner input = new Scanner(System.in); 
        System.out.print("Enter a number:"); 
        int number = input.nextInt();
        //先获取到的是字符串 然后将字符串的内容进行解析 解析为数字 
        int sum = 0; 
        //2.拆分数字 将每次拆出来的数字进行累加->sum 
        while (number != 0) { 
            sum += number % 10; 
            number /= 10; 
        }
        System.out.println(sum); 
    }
    /* 
Enter a number:12345678999 
Exception in thread "main" java.util.InputMismatchException: For input string: "12345678999" 
        at java.util.Scanner.nextInt(Unknown Source) 
        at java.util.Scanner.nextInt(Unknown Source) 
        at Sample.main(Sample.java:7) 
    */ 
}

将上述代码,改为for循环

import java.util.Scanner; 
public class Sample { 
    public static void main(String[] args) { 
        int sum = 0; 
        Scanner input = new Scanner(System.in); 
        System.out.print("Enter a number:");
        for (int number = input.nextInt();number != 0;number /= 10) { 
            sum += number % 10; 
        }
        System.out.println(sum); 
    } 
}

猜数字的游戏 Demo32

import java.util.Scanner;
public class Demo32{
    public static void main(String[] args){
        //1.先产生一个随机数
        /*
        Math.random(); 产生一个[0,1)的小数
        (int)[0,1) * 101 = [0,101)
        */
        int com = (int) (Math.random() * 101);
        System.out.println(com);   
        //2.让用户输入一个数字,来判断是否猜中
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a number:");
        while(true){
            int usr = input.nextInt();
            if (usr > com){
                System.out.println("high");
            }else if (usr < com) {
                System.out.println("low");
            }else {
                System.out.println("niubility!");
                break;
            }
        }
    }
}

3.5 breakcontinue跳转语句

break在循环语句中叫做终止语句,终止的是break最近的一层循环

continue在循环语句中叫做跳过语句,跳过本次循环开启下一轮循环

import java.util.Scanner; 
public class Sample { 
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) { 
            if (i == 3) { 
                break; 
            } else { 
            System.out.println(i); 
            } 
        }
        //结果 1 2
        for (int i = 1; i <= 5; i++) { 
            if (i == 3) { 
                continue; 
            } else { 
                System.out.println(i); 
            }    
        }
        //结果 1 2 4 5 
    } 
}

跳转标签

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值