Java初学练习总结(下)

7.完成生成N位验证码(大写字母、小写字母、数字)——————————练习数组、循环和方法

package practice;

import java.util.Random;

public class Saturday {
    public static void main(String[] args) {
        /**
         * 7.完成生成N位验证码(大写字母、小写字母、数字)———————————————————练习数组、循环和方法
         */
        String capt = captcha(6);
        System.out.println(capt);
    }
    public static String captcha(int len){
        String capt = "";
        Random rand = new Random();
        char[] cap = {'a','b','c','d','e','f','g','h','i','j','k',
                        'l','m','n','o','p','q','r','s','t','u','v',
                        'w','x','y','z','A','B','C','D','E','F','G',
                        'H','I','J','K','L','M','N','O','P','Q','R',
                        'S','T','U','V','W','X','Y','Z','0','1','2',
                        '3','4','5','6','7','8','9'};//验证码字符可选范围
        for(int i=0;i<len;i++){//len次
            int index = rand.nextInt(cap.length);//随机下标(0到61)
            capt += cap[index];//根据随机下标获取对应字符并拼接到capt中
        }
        return capt;
    }
}

8.完成找到2到100之内的所有素数——————————————练习嵌套循环

    for(int num=2;num<=100;num++) {
        boolean flag = true;//假设每个num都是true
        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.print(num + "\t");
        }
    }
/*
// 7%2/3/4/5/6,但凡有1个为0的,就能说明它不是素数,只有都不为0的,才是素数
        int num = 7; //7,8,9,11
        boolean flag = true; //1)假设num是素数
        for(int i=2;i<=num/2;i++){ //i=2/3
            if(num%i==0){
                flag = false; //2)修改num为不是素数
                break;
            }
        }
        if(flag){ //3)判断flag标记
            System.out.println(num+"是素数");
        }else{
            System.out.println(num+"不是素数");
        }
*/

9.完成飞机票打折—————————————————————练习分支和方法
需求:
机票价格按照季节(淡季、旺季)、舱位(头等舱、商务舱、经济舱)收费
要求:
输入机票原价、月份和舱位,实现不同的折扣
--旺季(5月到10月)时,头等舱9折,商务舱85折,经济舱8折
--淡季(11月到来年4月)时,头等舱7折,商务舱65折,经济舱6折

package practice;

import java.util.Scanner;

public class Saturday {
    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("请输入舱位:1.头等舱 2.商务舱 3.经济舱");
        int type = sc.nextInt();
        double airfare = airFinalPrice(price,month,type);
        if(airfare!=-1){
            System.out.println(airfare);
        }
    }
    /**
     * 根据原价、月份、舱位,计算飞机票的最终价格
     */
    public static double airFinalPrice(double price,int month,int type){
        double airfare = 0.0;
        int air;
        if(price<0 || month<1 || month>12 || type<1 || type>3){
            System.out.println("输入错误");
            return -1;//只要数据输入错误,都统一返回-1
        }
        if(month>=5 && month <=10){//旺季
            switch (type){//根据舱位类型做不同折扣
                case 1:
                    airfare = price*0.9;
                    break;
                case 2:
                    airfare = price * 0.85;
                    break;
                case 3:
                    airfare = price * 0.8;
            }
        }else {//淡季
            switch (type){//根据舱位类型做不同折扣
                case 1:
                    airfare = price*0.7;
                    break;
                case 2:
                    airfare = price * 0.65;
                    break;
                case 3:
                    airfare = price * 0.6;
            }
        }
        return airfare;
    }

}

10.完成评委打分:去掉最高分和最低分之后的平均分——————练习数组、循环和方法
需求:
《主持人大赛》有N名评委给选手打分,要求分数范围为0到100之间的浮点数
选手的最终得分为: 去掉最高分和最低分后的N-2个评委的平均分
训练目标: 方法的设计

package practice;

import java.util.Scanner;

public class Saturday {
    public static void main(String[] args) {
        /**
         * 10.完成评委打分:去掉最高分和最低分之后的平均分——————练习数组、循环和方法
         * 需求:
         *  《主持人大赛》有N名评委给选手打分,要求分数范围为0到100之间的浮点数
         *   选手的最终得分为: 去掉最高分和最低分后的N-2个评委的平均分
         * 训练目标: 方法的设计
         */
        double[] scores = finalScore(6);//假设有6个评委
        double avg = averagScore(scores);//1)录入评委的评分
        System.out.println("平均分为:"+avg);//2)计算平均分
    }
    //录入评委分数
    public static double[] finalScore(int num) {
        Scanner sc = new Scanner(System.in);
        double[] scores = new double[num];//评分数组
        for (int i = 0; i < scores.length; i++) {
            System.out.println("第" + (i + 1) + "个评委打分:");
            /*double judgesScore = sc.nextDouble();*/
            scores[i] = sc.nextDouble();
        }
        return scores;
    }
    //计算平均分
    public static double averagScore(double[] scores){
        double sum = sumScore(scores);//获取去掉最高分和最低分之后的总分
        double avg = sum/(scores.length-2);//平均分
        return avg;
    }

    //减去最高分和最低分后的总分
    public static double sumScore(double[] scores){
        double sum = 0.0;
        double max = scores[0];//假设第1个元素为最大值
        double min = scores[0];//假设第1个元素为最小值
        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];//计算总分
        }
        return sum-max-min;//返回去掉最高分和最低分之后的总分
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值