初来乍到,承蒙关照
啦啦啦啦啦~~~~~~

我在B站上大学😄

学习至:狂神说Java

Switch选择结构

语法:

switch(变量){
case value1:
语句1;
// break; //可选
case value2:
语句2;
// break; //可选
...
default: //可选
语句n;
}

注意:不写break会有case穿透现象,某value x满足条件,如果该语句中没有break,则不仅会执行语 句x,下方的语句x+1等也会执行,直至出现break跳出或执行到结尾为止。

从Java SE 7开始,switch支持String类型

eg1:

public class Switch01 {
    public static void main(String[] args) {
        char grade = 'C';
        switch (grade){
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("中等");
                break;
            case 'D':
                System.out.println("及格");
                break;
            case 'E':
                System.out.println("不及格");
                break;
            default:
                System.out.println("未知等级");

        }
    }
}

中等

进程已结束,退出代码0

eg2:

public class Switch02 {
    public static void main(String[] args) {
        String a = "清华大学";
        switch ("清华大学"){
            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 "清华大学":
                System.out.println("清华大学");
                break;
            default:
                System.out.println("其他大学");
        }
    }
}
清华大学

进程已结束,退出代码0

反编译:将上述生成的class在IDEA中直接打开即可实现反编译

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class Switch02 {
    public Switch03() {
    }

    public static void main(String[] args) {
        String a = "清华大学";
        switch ("清华大学") {
            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 "清华大学":
                System.out.println("清华大学");
                break;
            default:
                System.out.println("其他大学");
        }

    }
}

循环结构

while循环

语法:

while(布尔表达式){
...; //循环类容
}

eg:

public class WhileDemo01 {
    public static void main(String[] args) {
        //计算1+2+3+....+100的值
        int i = 0;
        int sum =0;
        while (i<=100){
            sum += i;
            i++;
        }
        System.out.println("1+2+3+....+100=" + sum);
    }
}
1+2+3+....+100=5050

进程已结束,退出代码0

do...while循环

语法:

do{
...;//循环类容
}while(布尔表达式);

do...while先执行后判断,至少执行一次;

while 先判断后执行

eg:

public class WhileDemo02 {
    public static void main(String[] args) {
        //计算1+2+3+....+100的值
        int i = 0;
        int sum =0;
        do {
            sum += i;
            i++;
        }
        while (i<=100);
        System.out.println("1+2+3+....+100=" + sum);
    }
}
1+2+3+....+100=5050

进程已结束,退出代码0

For循环

语法:

for(初始值; 条件判断; 更新){
...;//循环内容
}

For循环语句是支持迭代的的一种通用结构,是最有效、最灵活的循环结构;

For循环执行的次数是在执行前就确定的。

IDEA中的快捷输入:

数字 . fori 回车 :可以快速生成一个对应数字循环次数的递增for循环;

数字 . forr 回车 :可以快速生成一个对应数字循环次数的递减for循环

eg1:

public class ForDemo01 {

    public static void main(String[] args) {

        int sum1 =0;
        int sum2 =0;

        //计算0~100之间奇数的和与偶数的和
        for (int i = 1; i < 100; i= i + 2) {
            sum1 += i;
        }
        for (int i = 2; i <= 100; i= i + 2) {
            sum2 += i;
        }
                        /*for (int i = 0; i <= 100; i++) {
                            if (i%2!=0){
                                sum1 += i;
                            }
                            else{
                                sum2 += i;
                            }
                        }*/
        System.out.println("0~100之间的奇数和为: "+sum1);
        System.out.println("0~100之间的偶数和为: "+sum2);
    }
}
0~100之间的奇数和为: 2500
0~100之间的偶数和为: 2550

进程已结束,退出代码0

eg2:

public class ForDemo02 {
    public static void main(String[] args) {
        //用for循环输出1~100之间能被5整除的数,每行输出3个
        int j = 0;
        for (int i = 1; i <= 100; i++) {
            if (i%5==0){
                System.out.print( i + "\t\t");
                j++;
                if (j % 3 == 0){
                    System.out.println();
                }
            }
            else {
                continue;
            }
        }
    }
}
5		10		15		
20		25		30		
35		40		45		
50		55		60		
65		70		75		
80		85		90		
95		100		
进程已结束,退出代码0

eg3:

public class ForDemo03 {
    public static void main(String[] args) {
        //打印九九乘法表
        for (int i = 1; i < 10; i++) {
            for (int j=1; j <= i; j++) {
                System.out.print(j +"×" + i + "="+ i*j + "\t\t");
            }
            System.out.println();
        }
    }
}
1×1=1		
1×2=2		2×2=4		
1×3=3		2×3=6		3×3=9		
1×4=4		2×4=8		3×4=12		4×4=16		
1×5=5		2×5=10		3×5=15		4×5=20		5×5=25		
1×6=6		2×6=12		3×6=18		4×6=24		5×6=30		6×6=36		
1×7=7		2×7=14		3×7=21		4×7=28		5×7=35		6×7=42		7×7=49		
1×8=8		2×8=16		3×8=24		4×8=32		5×8=40		6×8=48		7×8=56		8×8=64		
1×9=9		2×9=18		3×9=27		4×9=36		5×9=45		6×9=54		7×9=63		8×9=72		9×9=81		

进程已结束,退出代码0

增强For循环

主要应用于集合和数组。用于遍历;

语法:

for(声明语句: 表达式){
...;
}

eg:

public class ForDemo04 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50,60};
        //用于遍历数组
        for(int x: numbers)  {
            System.out.println(x);
        }
    }
}
10
20
30
40
50
60

进程已结束,退出代码0

break continue goto

break:强行退出循环结构;

continue:退出当前的循环,直接进入下一次循环(所以continue放在循环语句末尾是无意义的);

goto: 尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用,Java没有goto。然而,在break和continue这两个关键字的身 上,我们仍然能看出一些goto的影 子---带标签的break和continue。

​ “标签”是指后面跟一个冒号的标识符,例如: label 对Java来说唯一用到标签的地方是在循环语 句之前。而在循环之前设置标签的唯一理由是:我们希望在其 中嵌套另-个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中 断到存在标签的地方。

eg1:

public class break01 {
    public static void main(String[] args) {
        int i=0;
        while (i<10){
            i++;
            if (i==6){
                break;
            }
            System.out.println(i);
        }
    }
}//i未递增至9,在等于6时推出循环
1
2
3
4
5

进程已结束,退出代码0

eg2:

public class continue01 {
    public static void main(String[] args) {
        //输出1~100不能被10整除的数,三个一行
        int j=0;
        for (int i = 0; i < 100; i++) {
            if (i%10==0){
                continue;
            }
            System.out.print(i+"\t\t");
            j++;
            if (j%9==0){
                System.out.println();
            }

        }
    }
}
1		2		3		4		5		6		7		8		9		
11		12		13		14		15		16		17		18		19		
21		22		23		24		25		26		27		28		29		
31		32		33		34		35		36		37		38		39		
41		42		43		44		45		46		47		48		49		
51		52		53		54		55		56		57		58		59		
61		62		63		64		65		66		67		68		69		
71		72		73		74		75		76		77		78		79		
81		82		83		84		85		86		87		88		89		
91		92		93		94		95		96		97		98		99		

进程已结束,退出代码0

eg3:

public class LabelDemo {
    public static void main(String[] args) {
        //打印1~100所有的质数,注意 1 既不是质数也不是合数
        loop1: for (int i = 2; i <= 100; i++) {
            loop2: for(int j = 2;j <= i/2;j++){//比一个数的0.5倍大的数不可能是该数的因数
                if(i % j==0){
                    continue loop1;
                }
            }
            System.out.print(i + " ");
        }
    }
}
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
进程已结束,退出代码0

例题1

打印八行杨辉三角

public class Test1 {
    public static void main(String[] args) {
        //用循环语句打印8行杨辉三角形
        /*          
                     1   
                   1   1   
                 1   2   1   
               1   3   3   1   
             1   4   6   4   1   
           1   5   10   10   5   1   
         1   6   15   20   15   6   1   
       1   7   21   35   35   21   7   1   
      */
        for (int i = 0; i < 8; i++) {

            //排版,打印空格
            for (int k = 0; k < 8 - i - 1; k++) {
                System.out.print("  ");//相邻两行同一位置的数差两个空格
            }
            //打印每行数值
            for (int j = 0; j <= i; j++) {
                System.out.print(  factorial(i)/((factorial(j)) * (factorial(i-j)))  +"   ");
                //组合数计算:C(m,n) = n!/( (n-m)!*m! )
                //行内两数间三个空格
            }
            System.out.println();

        }

    }
    //阶乘计算
    private static int factorial(int x) {
        if (x==1 || x==0){
            return 1;
        }
        else{
            return x * factorial(x-1);
        }
    }
}

public class Test2 {
    public static void main(String[] args) {
        //打印8行杨辉三角形
       
        for (int i = 0; i < 8; i++) {

            //打印空格
            for (int k = 0; k < 8 - i - 1; k++) {
                System.out.print("  ");
            }
            //打印每行数值
            for (int j = 0; j <= i; j++) {
                System.out.print( factorial(i,j) +"   ");
            }
            System.out.println();

        }

    }
    //组合数计算:C(m,n+1) = C(m,n) + C(m-1,n)
    private static int factorial(int x, int y) {
        if (y==0 || x==y){
            return 1;
        }
        else{
            return factorial(x-1, y) + factorial(x-1,y-1);
        }
    }
}
              1   
            1   1   
          1   2   1   
        1   3   3   1   
      1   4   6   4   1   
    1   5   10   10   5   1   
  1   6   15   20   15   6   1   
1   7   21   35   35   21   7   1   

进程已结束,退出代码0

例题2

用*号打印五行三角形

public class Test03 {
    public static void main(String[] args) {
        /* 用循环语句打印三角形
               *
             * * *
           * * * * *
         * * * * * * *
       * * * * * * * * *
       
         */
        for (int i = 0; i < 5; i++) {

            for (int j = 4; j > i; j--) {
                System.out.print("  ");
            }
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("* ");
            }
            System.out.println();

        }
    }
}
        * 
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * * 

进程已结束,退出代码0

例题3

用*打印10行倒三角

public class Text03 {
    public static void main(String[] args) {

        for (int y = 10; y >= 1; y--) {
            for (int x = 10; x > y; x--) {
                System.out.print("  ");
            }

            for (int x = 1; x <= 2 * y - 1; x++) {
                System.out.print("* ");
            }

            System.out.println();
        }

    }
}
* * * * * * * * * * * * * * * * * * * 
  * * * * * * * * * * * * * * * * * 
    * * * * * * * * * * * * * * * 
      * * * * * * * * * * * * * 
        * * * * * * * * * * * 
          * * * * * * * * * 
            * * * * * * * 
              * * * * * 
                * * * 
                  * 

进程已结束,退出代码0

例题4

打印三行对称等腰梯形

public class Test04 {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) {
            for (int j = 3; j > i; j--) {
                System.out.print("  ");
            }
            for (int j = 1; j <= 2*(i+2)-1; j++) {
                System.out.print("* ");
            }
            for (int j = 3; j >= i; j--) {
                System.out.print("    ");
            }
            for (int j = 1; j <= 2*(i+2)-1; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }

    }
}
    * * * * *             * * * * * 
  * * * * * * *         * * * * * * * 
* * * * * * * * *     * * * * * * * * * 

进程已结束,退出代码0

例题5

用*号打印一颗爱心❤

public class Text05 {
    public static void main(String[] args) {
        
        int size = 10; // 心形下侧高度
        //打印上侧
        for (int y = size / 2; y <= size; y += 2) {
            for (int x = 1; x < size - y; x += 2) {
                System.out.print("  ");
            }

            for (int x = 1; x <= y; x++) {
                System.out.print("* ");
            }

            for (int x = 1; x <= size - y; x++) {
                System.out.print("  ");
            }

            for (int x = 1; x <= y; x++) {
                System.out.print("* ");
            }

            System.out.println();
        }
        //打印下侧
        for (int y = size; y >= 1; y--) {
            for (int x = size; x > y; x--) {
                System.out.print("  ");
            }

            for (int x = 1; x <= 2 * y - 1; x++) {
                System.out.print("* ");
            }

            System.out.println();
        }
    }
}
    * * * * *           * * * * * 
  * * * * * * *       * * * * * * * 
* * * * * * * * *   * * * * * * * * * 
* * * * * * * * * * * * * * * * * * * 
  * * * * * * * * * * * * * * * * * 
    * * * * * * * * * * * * * * * 
      * * * * * * * * * * * * * 
        * * * * * * * * * * * 
          * * * * * * * * * 
            * * * * * * * 
              * * * * * 
                * * * 
                  * 

进程已结束,退出代码0
posted on 2023-07-14 10:57  绿萝佛裳  阅读(15)  评论(2编辑  收藏  举报