JavaDay03

增强for循环

package com.han.struct;
​
public class ForDemo05 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};//定义一个数组
        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
​
        }
        System.out.println("==================");
        //遍历数组元素
        for(int x:numbers){
            System.out.println(x);
        }
    }
}

break ;continue

package com.han.struct;
​
import java.sql.SQLOutput;
​
public class BreakDemo {
    public static void main(String[] args) {
        int i = 0;
        while (i<100){
            i++;
            System.out.println(i);
            if(i==30){
                break;
            }
        }
        System.out.println("123");
    }
}
package com.han.struct;
​
public class ContinueDemo {
    public static void main(String[] args) {
        int i = 0;
        while (i<100){
            i++;
            if(i%10==0){
                System.out.println();
                continue;
            }
            System.out.println(i);
        }
    }
}

break在任何循环语句的主体部分,均可用break控制循环流程。

break用于强行退出循环,不执行循环中剩余的语句。

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

(可以比喻成一个辞职一个休假)

练习

三角形

package com.han.struct;
​
public class TestDemo01 {
    public static void main(String[] args) {
        // 外层循环控制行数,要打印 5 行,所以循环范围是从 0 到 5
        for (int i = 0; i <= 5; i++) {
            // 第一个内层循环用于打印每行前面的空格
            // 随着行数 i 的增加,空格的数量逐渐减少,初始时为 5 个,每次减少 1 个
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            // 第二个内层循环用于打印三角形左半部分的星号
            // 星号的数量随着行数 i 的增加而增加,初始时为 1 个,每次增加 1 个
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            // 第三个内层循环用于打印三角形右半部分的星号
            // 这里需要注意,因为已经有一个星号在左半部分打印过了,所以起始位置从 1 开始,且条件是 j < i
            // 星号的数量比左半部分少 1 个,以保证三角形的形状
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            // 每行打印完后换行,以便开始下一行的打印
            System.out.println();
        }
    }
}

菱形

package com.han.struct;
​
public class TestDemo01 {
    public static void main(String[] args) {
        // 外层循环控制行数,要打印10行,所以循环范围是从 0 到 10
        for (int i = 0; i <= 10; i++) {
            if(i<=5) {
                // 第一个内层循环用于打印每行前面的空格
                // 随着行数 i 的增加,空格的数量逐渐减少,初始时为 5 个,每次减少 1 个
                for (int j = 5; j >= i; j--) {
                    System.out.print(" ");
                }
                // 第二个内层循环用于打印三角形左半部分的星号
                // 星号的数量随着行数 i 的增加而增加,初始时为 1 个,每次增加 1 个
                for (int j = 1; j <= i; j++) {
                    System.out.print("*");
                }
                // 第三个内层循环用于打印三角形右半部分的星号
                // 这里需要注意,因为已经有一个星号在左半部分打印过了,所以起始位置从 1 开始,且条件是 j < i
                // 星号的数量比左半部分少 1 个,以保证三角形的形状
                for (int j = 1; j < i; j++) {
                    System.out.print("*");
                }
            }else {
                int k = 10 - i;
                for (int j = 5; j >= k; j--) {
                    System.out.print(" ");
                }
                for (int j = 1; j <= k; j++) {
                    System.out.print("*");
                }
                for (int j = 1; j < k; j++) {
                    System.out.print("*");
                }
            }
            // 每行打印完后换行,以便开始下一行的打印
            System.out.println();
        }
    }
}
​

Java方法(Java是值传递,引用类型是引用传递)

方法是语句的集合。一个方法只做一个功能。

System.out.println();--->调用System中out中的println()方法。

package com.han.method;
​
public class Demo01 {
    //main方法
    public static void main(String[] args) {
        int sum = add(1,2);
        System.out.println(sum);
​
    }
    //加法public int add()加static才能被main调用
    public static int add(int a,int b){
        return a+b;
    }
}

方法类似其他语言的函数;方法包含一个方法头和一个方法体。

修饰符 返回值类型 方法名(变量类型 变量名){ ... 方法体 ... return 返回值; }

形式参数:add(int a,int b)中的a、b。

实际参数:int sum = add(1,2);中的1、2。

package com.han.method;
​
public class Demo02 {
    public static void main(String[] args) {
        //调用max()方法,打印max
        int max = max(10, 20);
        System.out.println(max);
​
    }
    //比大小
    public static int max(int num1, int num2){
        int result = 0;
        if(num1 == num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if(num1> num2){
            result =num1;
        }else{
            result=num2;
        }
        /*if(num1<num2){
            result = num2;
        }*/
        return result;
    }
}

方法重载

在一个类中,有相同的函数名称,但形参的函数不同。

public static int max(int num1, int num2){}
public static float max(float num1,int num2){}

方法名称必须相同。

参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。

命令行传参(例如dos命令行javac Demo03)

有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现

可变参数/不定向参数

方法中在指定参数后加省略号(int... i);

必须在方法的最后一个参数。

package com.han.method;
​
public class Demo05 {
    public static void main(String[] args) {
        Max(23,5,89);
​
    }
    public static void Max(double...i){
        if(i.length ==0){
            System.out.println("失败");
            return;
        }
        double result = i[0];
        for (int j = 0; j < i.length; j++) {
            if(i[j] > result){
                result = i[j];
            }
        }
        System.out.println("结果: "+result);
​
    }
}

递归(递归头+递归体)

A方法调用自己。

可以将大型复杂问题转化为小型问题。

大计算尽量不用该方法。

package com.han.method;
​
public class Demo07 {
​
    public static void main(String[] args) {
        System.out.println(f(5));
​
    }
    //1! 1
    //2! 2*1
    //5! 5*4*3*2*1
    //2 2*f(1)
    //3 3*f(2)
    public static int f(int n){
        if(n==1){
            return  1;
        }else {
            return  n*f(n-1);
        }
​
    }
}

边界条件:边界

前阶段

返回阶段n*(n-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值