Java学习五

Java方法

方法是什么

在这里插入图片描述

方法Debug

在这里插入图片描述

方法定义注意点

在这里插入图片描述

方法总结

在这里插入图片描述

方法使用时的常见问题

在这里插入图片描述
在这里插入图片描述

判断奇偶数的方法

在这里插入图片描述

方法在计算机中的执行原理

在这里插入图片描述
在这里插入图片描述

Java的参数传递机制:值传递

在这里插入图片描述

基本类型的参数传递

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

引用类型的参数传递

在这里插入图片描述

方法案例一 判断两个数组是否一样

在这里插入图片描述

public class MethodTest3 {
    public static void main(String[] args) {
        //判断两个int类型的数组是否一样
        int[] arr1 = {1, 2, 3};
        int[] arr2 = {1, 2, 4};
        System.out.println(equals(arr1, arr2));
    }

    public static boolean equals(int[] arr1, int[] arr2) {
        if (arr1 == null && arr2 == null) {
            return true;
        }
        if (arr1 == null || arr2 == null) {
            return false;
        }
        if (arr1.length != arr2.length) {
            return false;
        }
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] != arr2[i]) {
                return false;
            }
        }
        return true;
    }
}

方法重载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

return关键字在方法中单独使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法案例-买飞机票

public class Test1 {
    public static void main(String[] args) {
        //买飞机票
        double price = calculate(1500, 5, "头等舱");
        System.out.println("优惠价是:" + price);
    }

    public static double calculate(double price, int month, String type) {
        // 判断月份是淡季还是旺季
        if (month >= 5 && month <= 10) {
            //旺季
            switch (type) {
                case "头等舱":
                    price *= 0.9; // price = price * 0.9;
                    break;
                case "经济舱":
                    price = price * 0.85;
                    break;
            }
        } else {
            // 淡季
            switch (type) {
                case "头等舱":
                    price *= 0.7; // price = price * 0.9;
                    break;
                case "经济舱":
                    price = price * 0.65;
                    break;
            }
        }
        return price;
    }
}

方法案例-生成随机验证码

public class Test2 {
    public static void main(String[] args) {
        // 生成随机验证码
        String code = cretaeCode(6);
        System.out.println("生成的验证码为:" + code);
    }

    public static String cretaeCode(int len) {
        Random r = new Random();
        String code = "";
        for (int i = 0; i < len; i++) {
            int type = r.nextInt(3);//0 1 2  0 数字 1 大写字母 2小写字母
            switch (type) {
                case 0:
                    code += r.nextInt(10);
                    break;
                case 1:
                    // 随机大写字符 A 65   Z 65+25   (0-25)+65
                    char ch1 = (char) (r.nextInt(26) + 65);
                    code += ch1;
                    break;
                case 2:
                    // 随机小写字符 a 97   Z 97+25   (0-25)+97
                    char ch2 = (char) (r.nextInt(26) + 97);
                    code += ch2;
                    break;
            }

        }
        return code;
    }
}

方法案例-评委打分获取平均分

public class Test3 {
    public static void main(String[] args) {
        // 评委打分
        System.out.println("您的最终成绩是" + getAverageScore(6));
    }

    public static double getAverageScore(int number) {
        int[] scores = new int[number];

        Scanner s = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请录入第" + (i + 1) + "个评委的分数");
            int score = s.nextInt();
            scores[i] = score;
        }
        int sum = 0;
        int maxScore = scores[0];
        int minScore = scores[0];
        for (int i = 0; i < scores.length; i++) {
            int score = scores[i];
            sum += score;
            if (maxScore < score) {
                maxScore = score;
            }
            if (minScore > score) {
                minScore = score;
            }
        }

        return 1.0 * (sum - maxScore - minScore) / (number - 2);

    }
}

方法案例-数字加密

public class Test4 {
    public static void main(String[] args) {
        // 数字加密
        System.out.println(encrypt(1983));
    }

    public static String encrypt(int number) {
        int[] numbers = split(number);
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = (numbers[i] + 5) % 10;
        }
        reverse(numbers);
        String data = "";
        for (int i = 0; i < numbers.length; i++) {
            data += numbers[i];
        }
        return data;
    }

    public static int[] split(int number) {
        int[] numbers = new int[4];
        numbers[0] = number / 1000;
        numbers[1] = (number / 100) % 10;
        numbers[2] = (number / 10) % 10;
        numbers[3] = number % 10;
        return numbers;
    }

    public static void reverse(int[] numbers) {
        //反转数组
        for (int i = 0, j = numbers.length - 1; i < j; i++, j--) {
            int temp = numbers[i];
            numbers[i] = numbers[j];
            numbers[j] = temp;
        }
    }

}

方法案例-拷贝数组

public class Test5 {
    public static void main(String[] args) {
        //拷贝数组
        int[] arr = {1, 2, 3};
        int[] arr2 = cloneArray(arr);
        printArray(arr2);
    }

    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }
    public static int[] cloneArray(int[] arr) {
        int[] arr2 = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            arr2[i] = arr[i];
        }
        return arr2;
    }
}

方法案例-抢红包

import java.util.Random;
import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        //抢红包
        int[] money = {9, 66, 188, 520, 9999};
        start2(money);
    }

    public static void start2(int[] moneys) {
        // 输入任意内容,随机抽取一个红包 
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        //打乱数据顺序
        for (int i = 0; i < moneys.length - 1; i++) {
            int index = r.nextInt(0, moneys.length);
            int temp = moneys[i];
            moneys[i] = moneys[index];
            moneys[index] = temp;
        }
        for (int i = 0; i < moneys.length; i++) {
            System.out.println("请您输入任意内容抽奖");
            sc.next();
            System.out.println("恭喜您获得" + moneys[i] + "元红包");
        }
        System.out.println("抽奖结束");
    }
    public static void start(int[] moneys) {
        // 输入任意内容,随机抽取一个红包 存在性能问题
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        for (int i = 0; i < moneys.length; i++) {
            System.out.println("请您输入任意内容抽奖");
            sc.next();
            while (true) {
                int index = r.nextInt(0, moneys.length);
                int money = moneys[index];

                if (money != 0) {
                    System.out.println("恭喜您获得" + money + "元红包");
                    moneys[index] = 0;
                    break;
                }
            }
        }
        System.out.println("抽奖结束");
    }
}

方法案例-找素数

public class Test7 {
    public static void main(String[] args) {
        // 找素数
        System.out.println("素数数量"+findPrime(101, 200));

    }

    public static int findPrime(int start, int end) {
        int count = 0;


        for (int i = start; i <= end; i++) {
            boolean flag = true;
            for (int j = 2; j < i / 2 + 1; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }

            }
            if (flag) {
                System.out.println(i);
                count++;
            }

        }
        return count;

    }

}

方法案例-找素数2

public class Test7_2 {
    public static void main(String[] args) {
        // 找素数
        System.out.println("素数数量" + findPrime(101, 200));

    }

    public static int findPrime(int start, int end) {
        int count = 0;


        Out:// 为外部
        for (int i = start; i <= end; i++) {
            boolean flag = true;
            for (int j = 2; j < i / 2 + 1; j++) {
                if (i % j == 0) {
                    continue Out;//中断外层循环
                }

            }

            count++;
            System.out.println(i);


        }
        return count;

    }

}

方法案例-找素数3

public class Test7_3 {
    public static void main(String[] args) {
        // 找素数
        System.out.println("素数数量"+findPrime(101, 200));
    }

    public static int findPrime(int start, int end) {
        // 定义一个变量,用来记录素数个数
        int count = 0;
        for (int i = start; i <= end; i++) {
            if (isPrime(i)) {
                count++;
                System.out.println(i);
            }
        }
        return count;
    }

    public static boolean isPrime(int num) {
        // 判断一个数是不是素数
        for (int i = 2; i < num / 2 + 1; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

方法案例-九九乘法表

public class Test8 {
    public static void main(String[] args) {
        // 九九乘法表
        print(9);
    }
    public static void print(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();
        }
    }
}

方法案例-打印三角形

public class Test9 {
    public static void main(String[] args) {
        //打印三角形
        printTriangle(4);

    }

    public static void printTriangle(int n) {
        for (int i = 1; i <= n; i++) {
            //打印空格
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            //打印星号
            for (int k = 1; k <= (2 * i - 1); k++) {
                System.out.print(k % 2 == 0 ? " " : "*");
            }
            System.out.println();
        }
    }
}

方法案例-实现双色球

import java.util.Random;
import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        // 实现双色球
        int[] selectNumbers = userSelectNumbers();
        System.out.print("您选择的双色球的号码是:");
        printArray(selectNumbers);
        int[] luckyNumbers = createLuckyNumbers();
        System.out.print("生成的随机双色球的号码是:");
        printArray(luckyNumbers);
        judge(selectNumbers, luckyNumbers);
    }

    public static void printArray(int[] arr) {

        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }

    // 设计一个方法,用于让用户投注一组号码并返回(前6个是红色球号码,最后一个是蓝色球号码)
    public static int[] userSelectNumbers() {
        // 定义一个数组,用于存放用户输入的号码
        int[] numbers = new int[7];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < numbers.length - 1; i++) {

            while (true) {
                System.out.println("请输入第" + (i + 1) + "个红球号码(1-33之间不能重复):");
                int number = scanner.nextInt();
                if (number < 1 || number > 33) {
                    System.out.println("输入的号码不合法,请重新输入");
                } else {
                    if (isRepeat(number, numbers)) {
                        System.out.println("输入的号码不能重复,请重新输入");
                    } else {
                        numbers[i] = number;
                        break;
                    }
                }
            }

        }
        while (true) {
            System.out.println("请输入最后一个个蓝球号码(1-16):");
            int number = scanner.nextInt();
            if (number < 1 || number > 16) {
                System.out.println("输入的号码不合法,请重新输入");
            } else {
                numbers[6] = number;
                break;
            }
        }
        return numbers;
    }

    // 判断一个数组中是否有重复的数字
    public static boolean isRepeat(int number, int[] numbers) {
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == 0) {
                break;
            }
            if (numbers[i] == number) {
                return true;
            }
        }
        return false;
    }

    /**
     * 设计一个方法 随机一组中奖号码 (6个红色球,1个蓝色球)
     */
    public static int[] createLuckyNumbers() {
        int[] numbers = new int[7];
        Random random = new Random();
        for (int i = 0; i < numbers.length - 1; i++) {
            while (true) {
                int number = random.nextInt(33) + 1;
                if (!isRepeat(number, numbers)) {
                    numbers[i] = number;
                    break;
                }
            }
        }
        numbers[6] = random.nextInt(16) + 1;
        return numbers;
    }

    /**
     * 设计一个方法判断用户是否中奖
     */
    public static void judge(int[] userNumbers, int[] luckyNNumbers) {
        // 判断红色球命中个数
        int redCount = 0;
        // 判断蓝色球命中个数
        int blueCount = 0;
        for (int i = 0; i < userNumbers.length - 1; i++) {
            for (int j = 0; j < luckyNNumbers.length - 1; j++) {
                if (userNumbers[i] == luckyNNumbers[j]) {
                    redCount++;
                    break;
                }
            }
        }
        blueCount = userNumbers[6] == luckyNNumbers[6] ? 1 : 0;
        System.out.println("您命中的红球数量是:" + redCount);
        System.out.println("您命中的蓝球数量是:" + blueCount);

        if (redCount == 6 && blueCount == 1) {
            System.out.println("恭喜您,中一等奖了 1000万请收下!");
        } else if (redCount == 6 && blueCount == 0) {
            System.out.println("恭喜您,中二等奖了!500万请收下!");
        } else if (redCount == 5 && blueCount == 1) {
            System.out.println("恭喜您,中三等奖了 3000元!");
        } else if (redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1) {
            System.out.println("恭喜您,中四等奖了 200元!");
        } else if (redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1) {
            System.out.println("恭喜您,中五等奖了 10元!");
        } else if ((redCount < 3 && blueCount == 1)) {
            System.out.println("恭喜您,中六等奖了 5元!");
        } else {
            System.out.println("很遗憾,您没有中奖!");
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值