zoukankan      html  css  js  c++  java
  • JAVA基础 案例练习

    一、前言

      前面学了点基础,可以通过一些小案例巩固下基础

    二、实例

    package com.hello.base;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class CaseDemo {
        public static void main(String[] args) {
            //录入购买信息,调用方法得到最终结果
            Scanner sc = new Scanner(System.in);
            System.out.println("机票原价");
            double price = sc.nextDouble();
            System.out.println("月份");
            int month = sc.nextInt();
            System.out.println("仓位类型(头等舱、经济舱)");
            String type = sc.next();
    
            double rs = calc(price,month,type);
            System.out.println("您当前购买机票的价格是:"+rs);
    
            //调用寻找素数
            su();
            System.out.print("\n");
    
            //调用生成验证码的方法
            String code = CreateCode(5);
            System.out.println("随机验证码:"+code);
    
            //调用元素复制方法
            int [] arrc1 = {11,22,44};
            int [] arrc2 = new int[arrc1.length];
            copy(arrc1,arrc2);//此时已完成数组复制,如果想打印出来具体的值,需要再写一个方法
            printArray(arrc1);
            printArray(arrc2);
            System.out.println("\n");
    
            //调用计算评委得分
            int [] arrs = new int[6];//定义一个动态初始化的数据,用于后期录入6个分数
            Scanner scs = new Scanner(System.in);
            for(int i=0;i<arrs.length;i++){
                System.out.println("请录入第"+(i+1)+"个分数");
                int scores = scs.nextInt();
                arrs[i] = scores;//把这个分数存入到数组对应的位置
            }
            calcscore(arrs);
    
        }
        //打印复制元素的值的方法
        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.print("]");
        }
    
    
        /*案例一:买机票
    1、机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱
    2、按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折
    注:遇到判断值匹配的时候使用switch分支结构实现;遇到判断区间范围的时候选择if分支结构实现
     */
        public static double calc(double money,int month,String type) {
            //判断月份是淡季还是旺季
            if (month >= 5 && month <= 10) {
                //旺季
                switch (type) {
                    case "经济舱":
                        money *= 0.85;
                        break;
                    case "头等舱":
                        money *= 0.9;
                        break;
                    default:
                        System.out.println("您输入的舱位不正确");
                        money = -1;//当前无法计算价格了
                }
            } else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
                //淡季
                switch (type) {
                    case "经济舱":
                        money *= 0.65;
                        break;
                    case "头等舱":
                        money *= 0.7;
                        break;
                    default:
                        System.out.println("您输入的舱位不正确");
                        money = -1;//当前无法计算价格了
                }
            } else {
                System.out.println("月份有问题");
                money = -1;
            }
            return money;
        }
        /*
        案例二:找素数(如果除了1和它本身以外,不能被其他正整数整除,就叫素数)
         */
        public static void su(){
            //定义一个循环,找到101-200之间的全部数据
            for(int i =101;i<=200;i++){
                //信号位:标记
                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循环,循环5次
        3、随机生成0|1|2的数据,依次代表当前位置要生成数字|大写字母|小写字母
        4、把0、1、2交给switch生成对应类型的随机字符,把字符交给string变量
        5、循环结束后,返回string类型的变量即是所求的验证码结果。
         */
        public static String CreateCode(int n){
            //定义一个字符串变量记录生成的随机字符
            String code="";
            Random r = new Random();
            //定义一个for循环,循环n次,依次生成随机字符
            for(int i=0;i<n;i++){
                //生成一个随机字符,英文大写 小写 数字(0 1 2)
                int type = r.nextInt(3);//0 1 2
                switch (type){
                    case 0:
                        //大写字符(A 65 - Z 65+25) (0-25)+65
                        //注:A-Z对应的数字是65-90,生成随机数65-90的写法为nextInt(26)+65
                        //减加法 90-65=25,生成25个数即(0-26),括号里写26,外面+65,即随机数从65开始,至65+25=90结束
                        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 copy(int arrc1[],int arrc2[]){
            //完成元素的复制
            for(int i=0;i<arrc1.length;i++){
                arrc2[i]=arrc1[i];
            }
        }
        /*
        案例五:评委打分:有6名评委给选手打分,分数范围是[0-100]之间的整数,选手的最后得分为去掉最高分、最低分后的4个评委的平均分,
        请完成上述过程并计算出选手的得分
        分析:1、把6个评委的分数录入到程序中去---->使用数组  int[] scores = new int[6];
        2、遍历数组中每个数据,进行累加求和,并找出最高分、最低分
        3、按照分数的计算规则算出平均分。
         */
        public static void calcscore(int[] arrs){
            //遍历数组中的每个数据,找出最高分、最低分、总分
            int max=arrs[0], min =arrs[0], sum=0;
            for (int i=0;i<arrs.length;i++){
                if(arrs[i]>max){
                    max=arrs[i];//替换最大值变量存储的数据
                }
                if(arrs[i]<min){
                    min=arrs[i];//替换最小值变量存储的数据
                }
            sum +=arrs[i];//  统计总分
            }
            System.out.println("最高分为:"+max);
            System.out.println("最低分为:"+min);
            double result = (sum-max-min)/(arrs.length-2);
            System.out.println("最终得分为:"+result);
    
        }
    
    }
  • 相关阅读:
    通过线程池,从hbase中拿数据
    phoenix如何压缩表,以及如何映射表
    spring boot改造现有jms activeMQ配置
    windows安装redis
    mysql免安装版配置
    转发和重定向的区别
    object.equals(null)和object==null区别
    用IDEA学习getRealPath遇到的问题
    总误按win+Enter键弹出讲述人
    戴尔电脑插耳机后声音变化问题
  • 原文地址:https://www.cnblogs.com/Chilam007/p/15616779.html
Copyright © 2011-2022 走看看