java案例:买飞机票、找素数、开发验证码、数组元素复制、评委打分

买飞机票

  • 需求:
    1.机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
    2.机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
  • 分析:
    1.键盘录入机票的原价,仓位类型,月份信息,调用方法返回机票最终的优惠价格。
    2.方法内部应该先使用if分支判断月份是旺季还是淡季,然后使用switch分支判断是头等舱还是经济舱。
public static void main(String[] args) {
        //目标:完成买飞机票的价格计算
        //1.让用户输入机票原价,月份,仓位类型。
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入机票原价:");
        double money = sc.nextDouble();

        System.out.println("请您输入机票的月份(1-12月):");
        int month = sc.nextInt();

        System.out.println("请您选择仓位类型");
        String type = sc.next();

        //调用方法,统计结果
        System.out.println("机票优惠后的价格是"+calc(money,month,type));
    }

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

找素数

  • 要求:
    判断101-200之间有多少个素数,并输出所有素数
  • 分析
    1.101-200之间的数据可以采用循环依次拿到;每拿到一个数,判断该数是否是素数。
    2.判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数。
   //定义一个循环,找到101-200之间的数据
        for (int i = 101; i <=200 ; i++) {
            //i=101 102....200

        //信号位标记
        boolean flag = true;

        //判断当前遍历的这个数据是否是素数
            for (int j = 2; j < i / 2 ; j++) {
                if (i % j ==0){
                    flag = false;
                    break;
                }
            }
            //根据判定的结果选择是否输出这个数据,是素数别输出
            if (flag){
                System.out.print(i + "\t");
            }
        }

验证码

  • 需求:
    定义一个方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。
  • 分析:
    1.定义一个方法,生成验证码返回:方法参数是位数、方法的返回值类型是String。
    2.在方法内部使用for循环生成指定位数的随机字符,并连接起来。
    3.把连接好的随机字符作为一组验证码进行返回。
 public static void main(String[] args) {
    //需求:定义方法实现随机产生一个五位数的验证码,每位可能是数字、大写字母、小写字母。
    //4.调用获取验证码的方法得到一个随机的验证码
    String code = createCode(5);
    System.out.println("随机验证码:"+code);
    }

    //1.定义一个方法返回一个随机验证码:需要返回值类型申明、需要申明形参:Int n
    public static  String createCode(int n){
        //3.定义一个字符串变量记录生成的随机字符
        String code = "";
        Random r = new Random();
        //2.定义一个for循环,循环n次,依次生成随机字符
        for (int i = 0; i < n; i++) {
            //3.生成一个随机字符:英文大写 小写 数字(0,1,2)
            int type = r.nextInt(3);//0 1 2
            switch (type){
                case 0:
                    //大写字符(A 65-Z 65+25)(0-25)+65
                    char ch = (char) (r.nextInt(26)+65);
                    code +=ch;
                    break;
                case 1:
                    //小写字符(a 97-z 97+25)(0-25)+97
                    char ch1 = (char) (r.nextInt(26)+97);
                    code +=ch1;
                    break;
                case 2:
                    //数字字符
                    code +=r.nextInt(10);//0-9
                    break;
            }
        }
        return code;
    }

数组元素的复制

  • 需求:
    把一个数组中的元素复制到另一个新数组中去。
  • 分析:
    1.需要动态初始化一个数组,长度与原数组一样。
    2.遍历原数组的每个元素,依次赋值给新数组。
    3.输出两个数组的内容。
  public static void main(String[] args) {
        int[] arr1 = {11,22,33,44};
        int[] arr2 =new int[arr1.length];
        copy(arr1,arr2);
        printArray(arr1);
        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 void copy(int[] arr1,int[] arr2){
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
    }

评委打分

  • 需求:
    在唱歌比赛中,有6名评委给选手打分,分数范围是【0-100】之间的整数。选手的最后得分为:去掉最高分,最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
  • 分析:
    1.把6个评委的分数录入到程序中去----使用数组
    2.遍历数组中的每个数据,进行累加求和,并找出最高分、最低分。
    3.按照分数的计算规则算出平均分。
  public static void main(String[] args) {
        //1.定义一个动态初始化的数组,用于后期录入6个评委的分数
        int[] scores = new int[6];
        //2.录入6个评委的分数
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请您输入第"+(i+1)+"个评委的打分");
            int score = sc.nextInt();
            //3.把这个分数存入到数据的对应位置
            scores[i] = score;
        }

        //3.遍历数组中的每个数据,找出最大值 最小值 总分
        int max = scores[0];
        int min = scores[0];
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            if (scores[i]>max){
                //替换最大值变量存储的数据
                max = scores[i];
            }
            if (scores[i]<min){
                //替换最小值变量存储的数据
                min = scores[i];
            }
            //统计总分
            sum += scores[i];
        }
        //4.统计平均分即可
       double result = (sum - max - min)*1.0/(scores.length-2);
        System.out.println("选手最终得分:"+result);
    }

你可能感兴趣的:(java,开发语言)