Java-编程案例

目录

一、案例1-买飞机票

二、案例2-找素数

三、案例3-开发验证码

四、案例4-数组元素的复制

五、案例5-评委打分

六、案例6-数字加密

七、案例7-模拟双色球


一、案例1-买飞机票

总结:遇到值匹配时使用switch分支实现;遇到区间范围的时候选择if分支实现

package com.pikaqiu.demo;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("请输入机票价格为:");
        double price = sc.nextDouble();

        System.out.print("请输入仓位类型(头等舱或者经济舱)为:");
        String type = sc.next();

        System.out.print("请输入月份信息(1-12)为:");
        int month = sc.nextInt();

        System.out.println("--------------------");
        double money = calculate(price,type,month);
        System.out.println("机票最终价格为:" + money);
    }

    //定义方法-计算机票价格
    public static double calculate(double price, String type, int month) {
        if((month >= 1 && month <= 4) || (month >= 11 && month <= 12)){
            switch(type){
                case "头等舱" :
                    price *= 0.7;
                    break;
                case "经济舱" :
                    price *= 0.65;
                    break;
                default:
                    System.out.println("您输入的仓位类型有误!!!");
                    price = -1; //表示无法计算价格
            }
        }else if(month >= 5 && month <= 10){
            switch(type){
                case "头等舱" :
                    price *= 0.9;
                    break;
                case "经济舱" :
                    price *= 0.85;
                    break;
                default:
                    System.out.println("您输入的仓位类型有误!!!");
                    price = -1; //表示无法计算价格
            }
        }else{
            System.out.println("您输入的月份有误!!!");
        }
        return price;
    }
}

二、案例2-找素数

需求:判断101-200之间有多少个素数,并输出所有素数

package com.pikaqiu.demo;

public class Test2 {
    public static void main(String[] args) {
        int number = find();
        System.out.println("101-200之间的素数个数为:" + number);
    }

    //定义方法-找素数
    public static int find(){
        int count = 0;
        System.out.print("101-200之间的素数为: ");
        //1.拿到101-200之间的全部数据
        for (int i = 101; i <= 200; i++) {
            //信号位:标记
            boolean flag = true; //假设认为该数为素数

            //2.判断是否是素数
            for(int j = 2 ; j < i / 2 ; j++){
                if(i % j == 0){
                    flag = false;
                    break;
                }
            }

            //3.根据判断结果判断是否输出这个数
            if(flag){
                System.out.print(i + " ");
                count++;
            }
        }
        System.out.println();
        return count;
    }
}

三、案例3-开发验证码

需求:定义一个方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母

package com.pikaqiu.demo;

import java.util.Random;

public class Test3 {
    public static void main(String[] args) {
        System.out.println("随机生成的五位验证码为:" + createCode(5));
    }

    //定义方法-获得验证码
    public static String createCode(int n){
        //定义变量存放验证码
        String code = "";
        Random r = new Random();
        
        //定义循环生成n位字符
        for (int i = 0; i < n; i++) {
            //生成一个随机字符:英文大写-0、小写-1,数字-2
            int type = r.nextInt(3);
            
            switch (type){
                case 0:
                    //大写字符(A-65到Z-65+25)
                    char ch = (char) (r.nextInt(26) + 65);
                    code += ch;
                    break;
                case 1:
                    //小写字符(a-97到z-97+25)
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code += ch1;
                    break;
                case 2:
                    //数字字符(0-9)
                    code += r.nextInt(10);
                    break;
            }
        }
        return code;
    }
}

四、案例4-数组元素的复制

需求:把一个数组中的元素复制到另一个数组中去

package com.pikaqiu.demo;

public class Test4 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4,5};
        int[] arr2 = new int[arr1.length];

        System.out.print("arr1数组元素为: ");
        print(arr1);
        
        System.out.println();
        
        System.out.print("arr2数组元素为: ");
        copy(arr1,arr2);
        print(arr2);
    }

    //定义方法-数组元素复制
    public static void copy(int[] arr1, int[] arr2){
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
    }

    //定义方法-打印数组
    public static void print(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

五、案例5-评委打分

package com.pikaqiu.demo;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        //用一个数组存放评委的评分
        int[] scores = new int[6];

        //获取6个评委的打分情况
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.print("第" + (i+1) + "个评委所给分数为: ");
            int data = sc.nextInt();
            scores[i] = data;
        }

        //得到最高分和最低分
        int max = max(scores);
        System.out.println("去掉一个最高分:" + max);
        int min = min(scores);
        System.out.println("去掉一个最低分:" + min);

        //输出最后得分
        System.out.println("最后得分为:" + average(scores,max,min));
    }

    //定义方法-求数组中的最大值
    public static int max(int[] a){
        int maxnum = a[0];
        for (int i = 1; i < a.length; i++) {
            if(maxnum < a[i]){
                maxnum = a[i];
            }
        }
        return maxnum;
    }

    //定义方法-求数组中的最小值
    public static int min(int[] a){
        int minnum = a[0];
        for (int i = 1; i < a.length; i++) {
            if(minnum > a[i]){
                minnum = a[i];
            }
        }
        return minnum;
    }

    //定义方法-计算平均分
    public static double average(int[] a,int max,int min){
        double sum = 0;
        for (int i = 0; i <a.length; i++) {
            if(a[i] != max && a[i] != min){
                sum += a[i];
            }
        }
        sum /= (a.length-2);
        return sum;
    }
}

六、案例6-数字加密

package com.pikaqiu.demo;

import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        int number = getNumber();

        //得到这四个数
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number / 100 % 10;
        int qian = number / 1000;

        //每个数字加5,之后再对10取余
        int ge1 = (ge + 5) % 10;
        int shi1 = (shi + 5) % 10;
        int bai1 = (bai + 5) % 10;
        int qian1 = (qian + 5) % 10;

        //将四位数反转,得到最后加密结果
        int locknumber = ge1 * 1000 + shi1 * 100 + bai1 * 10 + qian1;
        System.out.println("加密后的四位数为:" + locknumber);
    }

    //定义方法-获取一个四位数
    public static int getNumber(){
        //输入一个四位整数
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.print("请输入一个四位数:");
            int number = sc.nextInt();
            if (number >= 1000 && number <= 9999) {
                return number;
            } else {
                System.out.println("输入数字有误,请重新输入一个四位数!!!");
            }
        }
    }
}

七、案例7-模拟双色球

package com.pikaqiu.demo;

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

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

        //1.输出用户输入的号码
        int[] inputNumbers = usersInputNumbers();
        System.out.print("用户的号码为: [");
        for (int i = 0; i < inputNumbers.length; i++) {
            System.out.print(i == inputNumbers.length - 1 ? inputNumbers[i] : inputNumbers[i] + ",");
        }
        System.out.println("]");

        //2.接收中奖号码
        int[] luckNumbers = createLuckNumbers();
        System.out.print("中奖号码为: [");
        for (int i = 0; i < luckNumbers.length; i++) {
            System.out.print(i == luckNumbers.length - 1 ? luckNumbers[i] : luckNumbers[i] + ",");
        }
        System.out.println("]");

        //3.判断用户最终获得的奖金
        int[] count = judge(luckNumbers, inputNumbers);
        if ((count[0] == 0 && count[1] == 1) || (count[0] == 1 && count[1] == 1) || (count[0] == 2 && count[1] == 1)) {
            System.out.println("恭喜你中了六等奖,获得奖金5元~~~");
        } else if ((count[0] == 3 && count[1] == 1) || (count[0] == 4 && count[1] == 0)) {
            System.out.println("恭喜你中了五等奖,获得奖金10元~~~");
        } else if ((count[0] == 4 && count[1] == 1) || (count[0] == 5 && count[1] == 0)) {
            System.out.println("恭喜你中了四等奖,获得奖金200元~~~");
        } else if (count[0] == 5 && count[1] == 1) {
            System.out.println("恭喜你中了三等奖,获得奖金3000元~~~");
        } else if (count[0] == 6 && count[1] == 0) {
            System.out.println("恭喜你中了三等奖,获得奖金500万元~~~");
        } else if (count[0] == 6 && count[1] == 1) {
            System.out.println("恭喜你中了三等奖,获得奖金1000万元~~~");
        } else {
            System.out.println("很遗憾,你没有中奖,再接再厉吧~~~");
        } 
    }

    //1.定义方法-随机生成一组中奖号码
    public static int[] createLuckNumbers() {
        int[] luckNumber = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; i++) {
            while(true){
                int data = r.nextInt(33) + 1;

                //判断随机数是否重复
                boolean flag = true; //假设没有重复
                for (int j = 0; j < i; j++) {
                    if(luckNumber[i] == data){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    luckNumber[i] = data;
                    break;
                }
            }
        }
    int data = r.nextInt(16) + 1;
    luckNumber[6]=data;
        return luckNumber;
    }

    //2.定义方法-用户输入一组双色球号码
    public static int[] usersInputNumbers(){
        int[] number = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            while(true){
                System.out.print("请输入红色球号码(1-33):");
                int data = sc.nextInt();
                if(data >= 1 && data <= 33){
                    number[i] = data;
                    break;
                }else{
                    System.out.println("输入数据有误,重新输入!!!");
                }
            }
        }
        System.out.print("请输入蓝色球的号码(1-16):");
        int data = sc.nextInt();
        number[6] = data;
        return number;
    }

    //3.定义方法-判断用户中奖情况
    public static int[] judge(int[] luckNumbers,int[] inputNumber){
        //定义一个数组接收红、蓝双色球相同的个数
        int[] count = {0,0};

        for (int i = 0; i < 6; i++) {
            if(luckNumbers[i] == inputNumber[i]){
                count[0]++;
            }
        }
        if(luckNumbers[6] == inputNumber[6]){
            count[1]++;
        }
        return count;
    }
}
package com.pikaqiu.demo;

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

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

        //1.输出用户输入的号码
        int[] inputNumbers = usersInputNumbers();
        System.out.print("用户的号码为: [");
        for (int i = 0; i < inputNumbers.length; i++) {
            System.out.print(i == inputNumbers.length - 1 ? inputNumbers[i] : inputNumbers[i] + ",");
        }
        System.out.println("]");

        //2.接收中奖号码
        int[] luckNumbers = createLuckNumbers();
        System.out.print("中奖号码为: [");
        for (int i = 0; i < luckNumbers.length; i++) {
            System.out.print(i == luckNumbers.length - 1 ? luckNumbers[i] : luckNumbers[i] + ",");
        }
        System.out.println("]");

        //3.判断用户最终获得的奖金
        int[] count = judge(luckNumbers, inputNumbers);
        if ((count[0] == 0 && count[1] == 1) || (count[0] == 1 && count[1] == 1) || (count[0] == 2 && count[1] == 1)) {
            System.out.println("恭喜你中了六等奖,获得奖金5元~~~");
        } else if ((count[0] == 3 && count[1] == 1) || (count[0] == 4 && count[1] == 0)) {
            System.out.println("恭喜你中了五等奖,获得奖金10元~~~");
        } else if ((count[0] == 4 && count[1] == 1) || (count[0] == 5 && count[1] == 0)) {
            System.out.println("恭喜你中了四等奖,获得奖金200元~~~");
        } else if (count[0] == 5 && count[1] == 1) {
            System.out.println("恭喜你中了三等奖,获得奖金3000元~~~");
        } else if (count[0] == 6 && count[1] == 0) {
            System.out.println("恭喜你中了三等奖,获得奖金500万元~~~");
        } else if (count[0] == 6 && count[1] == 1) {
            System.out.println("恭喜你中了三等奖,获得奖金1000万元~~~");
        } else {
            System.out.println("很遗憾,你没有中奖,再接再厉吧~~~");
        } 
    }

    //1.定义方法-随机生成一组中奖号码
    public static int[] createLuckNumbers() {
        int[] luckNumber = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; i++) {
            while(true){
                int data = r.nextInt(33) + 1;

                //判断随机数是否重复
                boolean flag = true; //假设没有重复
                for (int j = 0; j < i; j++) {
                    if(luckNumber[i] == data){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    luckNumber[i] = data;
                    break;
                }
            }
        }
    int data = r.nextInt(16) + 1;
    luckNumber[6]=data;
        return luckNumber;
    }

    //2.定义方法-用户输入一组双色球号码
    public static int[] usersInputNumbers(){
        int[] number = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            while(true){
                System.out.print("请输入红色球号码(1-33):");
                int data = sc.nextInt();
                if(data >= 1 && data <= 33){
                    number[i] = data;
                    break;
                }else{
                    System.out.println("输入数据有误,重新输入!!!");
                }
            }
        }
        System.out.print("请输入蓝色球的号码(1-16):");
        int data = sc.nextInt();
        number[6] = data;
        return number;
    }

    //3.定义方法-判断用户中奖情况
    public static int[] judge(int[] luckNumbers,int[] inputNumber){
        //定义一个数组接收红、蓝双色球相同的个数
        int[] count = {0,0};

        for (int i = 0; i < 6; i++) {
            if(luckNumbers[i] == inputNumber[i]){
                count[0]++;
            }
        }
        if(luckNumbers[6] == inputNumber[6]){
            count[1]++;
        }
        return count;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮卡丘√

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值