学习Java第六天(综和小练习)

文章展示了Java编程中的几个实例,包括机票价格计算(考虑折扣)、质数检测、随机验证码生成、数组复制以及评委打分(去除最高分和最低分后求平均分)。
摘要由CSDN通过智能技术生成

(1)卖机票

class Test01 {
    public static void main(String[] args) {
        //卖机票
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入机票的原价");
        int ticket = sc.nextInt();
        System.out.println("请输入旅游的月份");
        int month = sc.nextInt();
        System.out.println("请选择机票舱位 0:头等舱  1:经济舱");
        int seat = sc.nextInt();
        //判断月份
        if (month >= 5 && month <= 10) {
            ticket=getPrice(ticket,seat,0.9,0.85);
            /*if(seat==0){
                ticket = (int) (ticket*0.9);
            }
            else if(seat == 1){
                ticket = (int) (ticket*0.85);
            }
            else {
                System.out.println("输入不合法");
            }*/
        } else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)) {

            ticket=getPrice(ticket,seat,0.7,0.65);
            /* if(seat==0){
                ticket = (int) (ticket*0.7);
            }
            else if(seat == 1){
                ticket = (int) (ticket*0.65);
            }
            else {
                System.out.println("输入不合法");
            }*/
        } else {
            System.out.println("输入月份不合法");
        }
        System.out.println(ticket);
    }

    //2: 创建方法
    public static int getPrice(int ticket, int seat, double v0, double v1) {
        if(seat==0){
            ticket = (int) (ticket*v0);
        }
        else if(seat == 1){
            ticket = (int) (ticket*v1);
        }
        else {
            System.out.println("输入不合法");
        }
        return ticket;
    }
}

(2)找质数

public class Test02 {
    public static void main(String[] args) {
        //找质数
        /*
        * j 表示被除数的范围,i表示除数的范围
        * */
        for (int i =101 ; i <=200 ; i++) {
            boolean flag = true;
            for (int j = 2; j <=99 ; j++) {
                //j表示2-99之间的每一个数子
                if (i % j == 0){
                    flag= false;
                    break;
                }


            }
            if (flag){
                System.out.println("当前数字 "+ i + "是一个质数");
            }
        }

    }
}

(3)生成随机验证码,长度为5 前面四为是大写字母或者小写字母 后面一位为数字

public class Test03 {
    public static void main(String[] args) {
/*生成随机验证码
长度为5
前面四为是大写字母或者小写字母
后面一位为数字
* */
        //(1)0将大小写字母放在一个数组中
        char [] chs = new char[52];
        for (int i = 0; i < chs.length; i++) {
            if (i <= 25){
                //添加小写字母
                chs[i]= (char) (97 + i);//强转,将int 类型的转为字符形
            }else {
                chs[i]= (char) (65 + i - 26);
            }

        }
      String result ="";



        //(2)生成前面四个随机数随机数
        Random rd = new Random();
        for (int i = 0; i < 4; i++) {
            int randomIndex=rd.nextInt(chs.length);
           // System.out.println(chs[randomIndex]);
           result+= chs[randomIndex];

        }
        //System.out.println(result);
        int num = rd.nextInt(10);
        result += num;
        System.out.println(result);
    }
}

(4)复制数组:将一个数组里面的元素复制到另外一个数组

public class Test04 {
    public static void main(String[] args) {
        //复制数组:将一个数组里面的元素复制到另外一个数组
        //(1)创建被复制的数组
        int [] arr ={45,12,22,58,69,33,58,54};
        //(2)创建一个新数组
        int [] newArr = new int[arr.length];
        int index = 0;
        //(3)遍历久数组拿到里面的元素
        for (int i = 0; i < arr.length; i++) {
            newArr[index] =arr[i];
            index++;
        }

        //(4)将拿到的元素复制给新的数组
        for (int i = 0; i < newArr.length; i++) {
            System.out.print(newArr[i]+" ");
        }

    }

}

(5)评委打分 * 分数范围:0-100 * 规则:六个评委的分,去掉最高分,去掉最低分 取其余的平均分

public class Test05 {
    public static void main(String[] args) {
        /*
        * 评委打分
        * 分数范围:0-100
        * 规则,六个评委的分,去掉最高分,去掉最低分 取其余的平均分
        * */

        //(1)定义数组存储六个分数,键盘录入
int [] scoresArr =getScore();
        for (int i = 0; i < scoresArr.length; i++) {
            System.out.print(scoresArr[i] + "  ");
        }
        System.out.println();
         //(2)求数组中的最大值
int maxNum=getMax(scoresArr);
        System.out.println("最大值"+maxNum);
        //(3)求数组中的最小值
int minNum = getMin(scoresArr);
        System.out.println("最小值为"+minNum);
        //(4) 求六个分数的总和
        int sumNum = getSum(scoresArr);
        System.out.println("和为"+sumNum);

        //(5)(总和 - 最高分 -最低分 )/4
        int avg = (sumNum -maxNum -minNum) /scoresArr.length-2;
        System.out.println("平均分为"+avg);
    }
    public  static  int[]  getScore(){
        int [] scores = new int[6];
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入评委的打分");
        for (int i = 0; i < 6; ) {
            int score=sc.nextInt();

            if (score>= 0 && score <= 100){
                scores[i]=score;
                i++;
            }else {
                System.out.println("成绩输入不合法");
            }

        }
        return scores;
    }

    public  static  int getMax(int [] scoresArr){
        int max = scoresArr[0];
        for (int i = 0; i < scoresArr.length; i++) {
            if (scoresArr[i]>max){
                max= scoresArr[i];
            }
        }
        return max;
    }

    public static  int getMin(int [] scoresArr){
        int min = scoresArr[0];
        for (int i = 0; i < scoresArr.length; i++) {
            if (scoresArr[i]<min){
                min=scoresArr[i];
            }
        }
        return min;
    }

    public  static  int getSum(int [] scoresArr){
        int sum =0;
        for (int i = 0; i < scoresArr.length; i++) {
            sum += scoresArr[i];
        }
        return sum;
    }



}

(6)

某系统的的数字密码(大于0) 采用加密的方式进行传输
* 规则如下:
* 每一位数先+5
* 再对10取余
* 最后将数反转
public class Test06 {
    public static void main(String[] args) {
/*
* 某系统的的数字密码(大于0) 采用加密的方式进行传输
* 规则如下:
* 每一位数先+5
* 再对10取余
* 最后将数反转
* */
 int [] arr =createArr();
        //(1)把整数的每一位添加进数组
        //int [] arr ={1,9,8,3};
        //(2)加密
        //一个循环只能做一件事
        for (int i = 0; i < arr.length; i++) {
            arr[i]+=5;//先将每一位数都加5

            
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i]%= 10;//将+5后的数对10取余

        }
        //将加密过后的数反转
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] =arr[j];
            arr[j] = temp;
        }


    //(3)拼接加密后的数组元素
        int num = 0;
        for (int i = 0; i < arr.length; i++) {
           num= num * 10 +arr[i];
           // System.out.println(num);

        }
        System.out.println(num);



    }
    //将整数添加进数组里面
    public  static  int[]  createArr(){
        //(1)计算出数组的长度
        int num = 1983;
        int temp = num;//记录num 的值,为第三步使用
        int count = 0;
        while(num != 0){
            num=num/10;

            count++;
        }
        //(2)先创建一个数组容器
        int [] arr = new int[count];
        //(3)得到每一位数字
        int index = arr.length-1;
        while (temp != 0){
            int ge = temp % 10;
            temp = temp / 10;
            arr[index] = ge;
            index--;
        }

        return arr;
    }
}

(7)

/*
* 抽奖
* 奖品:2,588,888,1000,10000
* 需求:打印出每个奖项,奖项出现的顺序不能重复
* */
public class Test07 {
    public static void main(String[] args) {
        /*
        * 抽奖
        * 奖品:2,588,888,1000,10000
        * 需求:打印出每个奖项,奖项出现的顺序不能重复
        * */
        //(1)定义数组表示奖池
         int [] arr = {2,588,888,1000,10000};
        //(2)定义新数组存放已经被抽过的奖
        int [] newArr = new int[arr.length];
        //(4)抽奖
        Random rd = new Random();
        for (int i = 0; i < 5; ) {
            int randomIndex = rd.nextInt(arr.length);
            int prize =arr[randomIndex];
            boolean flag = contain(newArr,prize);
            if (!flag){
                newArr[i]=prize;
                i++;
            }

        }
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }

    }
    //(3)判断抽到的奖在之前有没有被抽到过(有没有在新数组里面)
    public static  boolean contain(int [] arr,int prize){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == prize){
                return true;
            }
        }
        return  false;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值