java day07,初级循环,判断,数组,方法综合题目黑马程序员课后题

# 练习一:飞机票

需求:

​    机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。

​    按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)
头等舱7折,经济舱6.5折。

import java.util.Scanner;

public class day {
    public static void main(String[] ages) {
        Scanner sc = new Scanner(System.in);
        System.out.println("头等舱请输入1,经济舱请输入2");
        int seat = sc.nextInt();
        if (seat >= 0 && seat <= 2) {
            System.out.println("请输入现在是几月份");
            int month = sc.nextInt();
            if (month > 0 && month <= 12) {
                System.out.println("请输入机票原价");
                int money = sc.nextInt();
                if (money > 0) {
                    if (month <= 10 && month >= 5) {
                        switch (seat) {
                            case 1 -> System.out.println("您是头等舱客户,票价是:" + (money * 0.9));
                            default -> System.out.println("您是经济舱客户,票价是:" + (month * 0.85));
                        }
                    } else if (month <= 4 || (month >= 11 && month <= 12)) {
                        switch (seat) {
                            case 1 -> System.out.println("您是头等舱客户,票价是:" + money * 0.7);
                            default -> System.out.println("您是经济舱客户,票价是:" + money * 0.65);
                        }
                    }
                } else System.out.println("原价输入错误。。");
            } else System.out.println("月份输入错误。。");
        } else System.out.println("输入错误。。");
    }
}

二:打印素数

​    判断101~200之间有多少个素数,并输出所有素数。

备注:素数就是质数


public class day {
    public static void main(String[] ages) {
        //循环控制每个数字去取余,用方法传来的布尔值进行判读输出
        for (int j = 101; j <= 200; j++) {
if(sum(j)==true){
    System.out.print(j+"  ");
}
        }
    }
    public static boolean sum (int j){
        for (int i = 2; i <= 100; i++) {
            if (j % i == 0) {
                return false;//如果不是素数就返回false
            }
            } return true;//如果是素数就返回true
    }
}

# 练习三:验证码

需求:

​    定义方法实现随机产生一个5位的验证码

验证码格式:

​    长度为5

​    前四位是大写字母或者小写字母

​    最后一位是数字

import java.util.Random;

public class day {
    public static void main(String[] ages) {
        String ch = "";//定义一个字符串用来接收验证码
        System.out.print("随机数是:"+stochastic(ch));//输出方法里的验证码
    }
    public static String stochastic(String ch) {
        Random r = new Random();
        //for控制循环5次生成5个验证码
        for (int i = 1; i <= 4; i++) {
            //随机生成三个数字用来随机是大写还是小写还是数字
            int x = r.nextInt(2);
            //sitch循环来判断并生成
            switch (x) {
                case 0://判断是否生成大写,A是65;
                    char y1 = (char) (r.nextInt(26) + 65);
                    ch += y1;
                    break;
                case 1://判断是否生成小写,a是97;
                    char y2 = (char) (r.nextInt(26) + 97);
                    ch += y2;
                    break;
                /*default://判断是否生成数字
                    int y3 = r.nextInt(9) + 1;
                    ch += y3;
                    break;*/
            }
        }
        int y3 = r.nextInt(9) + 1;
        ch += y3;
        return ch;//返回ch的数值
    }
}

# 练习四:复制数组

需求:

​    把一个数组中的元素复制到另一个新数组中去。

public class day {
    public static void main(String[] ages){
        int []arr=new int[]{1,5,6,9,7,5};
        int []brr=new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            brr[i]=arr[i];
            System.out.print(brr[i]+" ");
        }
    }
}

# 练习五:评委打分

需求 :  

​    在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

import java.util.Random;

public class day {
    public static void main(String[] ages) {
        meanValue();
    }

    public static void meanValue() {
        int[] arr = new int[6];
        int[] brr = new int[arr.length - 2];
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int jury = r.nextInt(101);
            arr[i] = jury;
        }
        int num = 0;
        //将最大值放到数组的最左边
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                num = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = num;
            }
        }
        //将最小值放到数组的最左边
        for (int i = 5; i > 0; i--) {
            if (arr[i] < arr[i - 1]) {
                num = arr[i];
                arr[i] = arr[i - 1];
                arr[i - 1] = num;
            }
        }
        //将去掉最大值最小值的数据放到数组brr里面
        for (int i = 1, j = 0; i < arr.length - 1; i++, j++) {
            brr[j] = arr[i];
        }
        int sum = 0;
        //获取平均数
        for (int i = 0; i < brr.length; i++) {
            sum += brr[i];
        }
        System.out.println(sum / brr.length);
    }
}

# 练习六:数字加密

需求:

​    某系统的数字密码(大于0),比如1983,采用加密方式进行传输。

规则如下:

​    先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。

public class day {
    public static void main(String[] args) {
//调用Scanner包获取键盘录入
        //将录入数组除10获取循环次数即密码位数作为数组长度
        //将密码取余放入数组,实现将数字反转的加密
        //将数组的每位数字进行加5并且取余运算,完成加密算法
        //循环遍历数组,输出加密后的数字
        extracted();//输出方法结果
    }

    //定义方法用来加密运算
    public static void extracted() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入密码");
        int ch = sc.nextInt();
        //获取密码长度作为数组长度
        int j = 0;
        for (int i = ch; i != 0; j++) {
            i = i / 10;
        }
        //获取密码个位数并从右到左存储在数组中
        int ge;
        int[] arr = new int[j];
        for (int i = ch, n = 0; i != 0; n++) {
            ge = i % 10;
            arr[n] = ge;
            i = i / 10;
        }
        //将数字加密
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (arr[i] + 5) % 10;
        }
        System.out.print("加密密码为:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
}

# 练习七:数字解密

把上一题加密之后的数据进行解密

import java.util.Scanner;

public class day {
    public static void main(String[] ages) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入加密后的密码");
        int ch = sc.nextInt();
        int ge = 0;
        int j = 0;
        //获取密码长度作为数组长度
        for (int i = ch; i != 0; j++) {
            i = i / 10;
        }
        int[] arr = new int[j];
        //将加密后的密码倒转,获得正确的排序
        for (int i = ch, n = 0; i != 0; n++) {
            ge = i % 10;
            arr[n] = ge;
            i = i / 10;
        }
        //将密码解密
        for (int i = 0; i < arr.length; i++) {
            arr[i] = ((arr[i] + 5) % 10);
        }
        System.out.print("解密后密码为:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
}

# 练习八:抽奖

需求:

​    一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)

```java
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
```

import java.util.Random;
public class day {
    public static void main(String[] ages){
        //方法1:
        //静态初始化数组arr,然后定义brr,让brr长度和arr相同
        //用while循环使brr数组存入全部的数据
        //定义方法,将方法放进while循环内,以便随机的每个数字的都可以和brr数组比较
        // 随机数字作为数组arr下标和brr判断,如果有相同的证明已经被抽了,
        // 用return结束方法,返回布尔值false,
        // 遍历完没有重复结束方法,返回true
        //判断方法1返回的数据,如果为false则重新重新抽取
        //判断方法1返回的数据,如果为true则依次存储进入brr数组中
        //遍历输出brr
        /*Random r=new Random();
        int[]arr=new int[]{2, 588 , 888, 1000, 10000};
        int[]brr=new int[arr.length];
        int sum=0;
        //循环使奖品序列brr把奖全部存储
        while (sum<=arr.length-1) {
            int x=r.nextInt(arr.length);
            if(repetition(arr,brr,x)){
                brr[sum]=arr[x];
                sum++;
            }
        }
        for (int i = 0; i < brr.length; i++) {
            System.out.println(brr[i]+"元的奖金被抽出");
        }
    }
    //创建一个方法,判断是否奖项已经被抽走
    public static boolean repetition(int []arr,int[]brr,int x){
        for (int i = 0; i < arr.length; i++) {
            if(arr[x]==brr[i]){//如果brr有相同的数据,那么结束方法,返回false
                return false;
            }
        }
        return true;//将arr[x]与brr数组里所有的数字进行了对比,没有重复的,返回true*/
   //方法2:
        //随机数作为数组的索引进行随机交换
        //打乱5次输出数组即可
        Random r=new Random();
        int[]arr=new int[]{2, 588 , 888, 1000, 10000};
        for (int i = 0; i < arr.length; i++) {
            int ram=r.nextInt(arr.length);
            int x=arr[ram];
            arr[ram]=arr[i];
            arr[i]=x;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]+"元的奖金被抽出");
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值