语句结构(if选择,switch选择,for循环,while循环(do……while循环))

语句结构

语句结构:
    顺序结构: 程序以自上而下的顺序执行
    选择结构: if选择  switch选择
    循环结构: for循环 while循环(do..while循环)

选择结构

选择结构(if):

if语句格式1:

if(关系表达式){

​ 语句体;

}

注意事项:
1、当语句体只有一行话的时候,大括号可以省略,建议永远不要省略大括号
2、小括号后面可以加分号,但是加了分号之后表示空语句体。
3、小括号中的结果只能是布尔类型的


public class IfDemo1 {
    public static void main(String[] args) {
        int a = 200;
//        if(a==100){
//            System.out.println("a的值是等于100的");
//        }
//
//        System.out.println("hello world");

        if (a == 100) ;

        //局部代码块
        {
            System.out.println("a的值是等于100的");
            System.out.println("数加科技");
        }

    }
}

if语句格式2:满足2选1的情况(即if和else中只有一个会执行)

if(关系表达式){

​ 语句体1;

}else{

​ 语句体2;

}

public class IfDemo2{
    public static void main(String[] aargs){
        int a=200;
        if(a==100){
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
    }
}

if语句定义格式3:

if(关系表达式1){

​ 语句体1;

}else if(关系表达式2){

​ 语句体2;

}else if(……){

​ ……

}……{

}else{

}

例题

​ 90-100 优秀
​ 80-90 好
​ 70-80 良
​ 60-70 及格
​ 60一下 不及格

import java.util.Scanner;
public class IfDemo3{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入学生的成绩:")
        int score=sc.nextInt();
        //java不允许连续比较
        if(score>=90 && score<=100){
            System.out.println("优秀")
        }else if(score>=80 && score<90){
            System.out.println("好");
        }else if(score>=70 && score<80){
            System.out.println("良");
        }else if(score>=60 && score<70){
            System.out.println("及格");
        }else if(score>=0 && score<60){
            System.out.println("不及格");
        }else {
            System.out.println("您输入的分数不在范围内!");
        }

    }
}

选择结构(switch):

语句定义格式:

switch(表达式){

​ case 常量值1:

​ 语句体1;

​ break;

​ case 常量值2:

​ 语句体2;

​ break;

​ case 常量值3:

​ 语句体3;

​ break;

…………

​ default:

​ 语句体n:

​ break;

}

注意事项:

1.表达式的取值:byte,short,int,char

​ JDK5 之后可以是枚举(后面补充)

​ JDK 之后可以是String

2、case后面只能是常量,不能是变量

3、执行流程:
先计算表达式中的结果值,然后拿着这个值自上而下与每一个case后面的常量值进行比较,如果有匹配的值,就执行对应case中的语句体,当遇到break
结束整个switch语句。若没有case与之对应匹配的值,就会执行default语句中的语句体,当遇到break就结束整个switch语句。
4、严格按照第三步的执行流程。

5、default一定要有吗?不一定,如果有程序会更加严谨

6、default一定要写在最后一个吗?不一定,可以放在switch中的任意位置。不影响运行流程

7、break可以不写吗?可以不写,但是可能会发生switch穿透

class SwitchDemo1 {
    public static void main(String[] args) {
        //案例:购买饮料的案例,前提,假设带的金额正好是一瓶饮料的价格
        //可乐 3   脉动 6   旺仔 5  汇源 14  椰子汁 8
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入所带的金额:");
        int money = sc.nextInt();
        switch (money){

            case 3:
                System.out.println("购买可乐一瓶!");
                break;
            default:
                System.out.println("没有该金额的饮料!");
                break;
            case 5:
                System.out.println("购买旺仔一瓶!");
//                break;
            case 6:
                System.out.println("购买脉动一瓶!");
                break;
            case 14:
                System.out.println("购买汇源一瓶!");
                break;
            case 8:
                System.out.println("购买椰子汁一瓶!");
                break;

        }


    }
}

例题

/*
    模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)
 */
public class SwitchTest3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("题目:以下哪一种是关系型数据库?()");
        System.out.println("A.redis  B.clickhouse  C.Mysql  D.hbase");
        System.out.println("请输入您的选项:");
        String choice = sc.next();
        switch (choice){
            case "A":
            case "B":
            case "D":
                System.out.println("选择错误!");
                break;
            case "C":
                System.out.println("选择正确!");
                break;
            default:
                System.out.println("没有该选择!");
                break;
        }

    }
}

运行结果

image-20240228195529224

循环结构

循环结构(for循环)

for循环的语句定义格式:

for(初始化条件语句;判断条件语句;控制条件语句){

​ 语句体;

}

注意事项:

1、初始化条件语句只会在循环开始执行一次,后续不执行

2、初始化条件语句可以提前写在for循环外面, 这样作用域在for循环外部也可以使用初始化条件语句定义的变量

3、当for循环中的语句体只有一行的时候,大括号可以省略, 建议永远不要省略大括号

4、判断条件语句能否不写?但是不写就是无条件执行,变成死循环

5、最简单的for死循环就是for(;😉

例题

package com.shujia.day03;
/*
循环10打印一个字符
 */
public class ForDemo {
    public static void main(String[] args) {
        int i=1;
        for (i=1;i<=10;i++){
            System.out.print("a");
        }
    }
}

image-20240228200311652

例题1

package com.shujia.day03;
/*
 请在控制台输出数据1-10
    请在控制台输出数据10-1
    求出1-10之间数据之和
    求出1-100之间偶数和
    求出1-100之间奇数和
    求5的阶乘
 */
public class ForTest1 {
    public static void main(String[] args) {
    //输出1~10
    for (int i=1;i<=10;i++){
        System.out.println(i);
    }
        System.out.println("-------------------");
    //输出10~1
    for (int j=10;j>0;j--){
        System.out.println(j);
    }
        System.out.println("-------------------");
    //求1~10之和
    int sum=0;
    for (int k=1;k<=10;k++){
        sum+=k;
    }
        System.out.println("1~10之和为:"+sum);
        System.out.println("-------------------");
        //求100的偶数之和与奇数之和
        int ouSum=0;
        int jiSum=0;
        for (int x=1;x<=100;x++){
            if (x%2==0){
                ouSum+=x;
            }else {
                jiSum+=x;
            }
        }
        System.out.println("偶数之和为:"+ouSum);
        System.out.println("奇数之和为:"+jiSum);
        System.out.println("-------------------");
        //求5的阶乘
        int chengJi=1;
        for (int y=2;y<=5;y++){
            chengJi*=y;
        }
        System.out.println("5的阶乘为:"+chengJi);
    }

}

image-20240228202327112

例题2

package com.shujia.day03;
/*

    在控制台输出所有的”水仙花数”
    统计”水仙花数”共有多少个

    所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
	举例:153就是一个水仙花数。
	153 = 1*1*1 + 5*5*5 + 3*3*3
 */
public class ForTest2 {
    public static void main(String[] args) {
        int count=0;
        for (int i=100;i<=999;i++){
            int baiWei=i/100;
            int shiWei=i%100/10;
            int geWei=i%10;
            if ((baiWei*baiWei*baiWei+shiWei*shiWei*shiWei+geWei*geWei*geWei)==i){
                System.out.println(i);
                count++;
            }
        }
        System.out.println("---------------");
        System.out.println("总共出现了:"+count+"次数");
    }
}

image-20240228211102141

例题3

package com.shujia.day03;

public class ForTest3 {
        public static void main(String[] args) {
            //请输出一个4行5列的星星(*)图案。
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");
//        System.out.print("*\t");
            //使用for循环改进,输出一行*
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
//
//        for(int i=1;i<=5;i++){
//            System.out.print("*\t");
//        }
//        System.out.println();
            //使用for循环输出n行*
            for (int i = 1; i <= 4; i++) { // 外层for循环控制的行数
                for (int j = 1; j <= 5; j++) { // 内层for循环控制的列数
                    System.out.print("*\t");
                }
                System.out.println();
            }
            System.out.println("------------------------------");
        /*
            第1行 共1个星
            第2行 共2个星
            第3行 共3个星
            ...
            第n行 共n个星
         */
            for (int i = 1; i <= 5; i++) {
                for (int j = 1; j <= i; j++) {
                    System.out.print("*\t");
                }
                System.out.println();
            }
            System.out.println("------------------------------");
            //在控制台输出九九乘法表。
            for (int i = 1; i <= 9; i++) {
                for (int j = 1; j <= i; j++) {
                    System.out.print(j + "*" + i + "=" + (j * i) + "\t");
                }
                System.out.println();
            }


        }
    }


image-20240228211413802

循环结构(while循环)

while循环结构:
语句定义格式:
初始化条件语句;
while(判断条件语句){
循环语句体;
控制条件语句;
}

使用场景:

​ 当明确了范围的时候,使用for循环,当不明确尤其还需要求次数的时候,优先考虑使用while循环

例题

package com.shujia.day03;
/*
 8848m,我现在有一张足够大的纸张,厚度为:0.01m。
 请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
 */
public class whileDemo {
    public static void main(String[] args) {
        int high=884800;
        int houDu=1;
        int count=0;
        while (houDu<high){
            houDu*=2;
            count++;
        }
        System.out.println("共折叠:"+count+"次,厚度为:"+houDu);
    }
}

image-20240228211854987

循环结构(do while)

while循环语句第二种格式:do..while循环
语句定义格式:
初始化条件语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);

do..while循环,无论条件是否满足,都会执行一次循环体内容。
package com.shujia.day03;

public class DowhileDemo {
    public static void main(String[] args) {
        //在控制台中输出10行hello world
        for(int i=1;i<=10;i++){
            System.out.println("hello world");
        }
        System.out.println("-------------------------");
        int i=1;
        while(i>10){
            System.out.println("hello world");
            i++;
        }
        System.out.println("-------------------------");
    }
}

image-20240228212214733

posted @ 2024-02-28 21:22  peculiar-  阅读(134)  评论(0)    收藏  举报