day_7/08(方法的练习2)

4、手机选号:根据用户输入的手机号来确认用户实际支付的价格

如果尾数为8,需支付办卡费50元

如果尾数为4,需支付办卡费用0元

如果是其他尾号,需支付办卡费用20元

代码及分析思路如下:程序从主函数进入,之后创建一个键盘输入变量,提示输入,用户输入后获取字符串,进入pd()方法,之后先判断手机号是否合法,接下来再判断尾号

public class Test {
    public static void main(String[] args) {
        //1、创建一个键盘输入变量
        Scanner sc = new Scanner(System.in);
        //2、提示输入
        System.out.println("请输入你的十一位手机号码");
        //3、获取数据,手机号比较长,用存为数字不太好运算,所以存为字符
        String a = sc.nextLine();
        //调用函数
        pd(a);

    }
    //分析:一般情况下,手机号码的长度为11位,使用数字来存储不太方便,所以采用字符串来存储
    //先判断手机号码是否合法,再判断尾号是4或8还是其他
    public static void pd(String tel){
        boolean flag = false;
        //判断是否为电话号码,判断每一位是否为数字
        for(int i=0;i<tel.length();i++){
            if('0'<=tel.charAt(i) && '9'>=tel.charAt(i)){
                flag = true;
            }else{
                flag = false;
                break;
            }
        }
        if(flag && 11 == tel.length()){
            //号码合法,判断尾数
            switch(tel.charAt(10)){
                case '8':
                    System.out.println("您的手机号码尾数为8,需支付办卡费50元"); break;
                case '4':
                    System.out.println("你的手机号码尾数为4,不需要支付办卡费用"); break;
                default:
                    System.out.println("你的手机号码不是4或8,需支付办卡费用20元");
            }
        }else{
            System.out.println("你输入的手机号码"+tel+"有误");
        }
    }
}

6、模拟双色球生成案例

需求:体彩中有一项是双色球,要求在1-33号共33个红色球里选出6个,1-16号共16个蓝色球中选出一个作为中奖号码,请实现这个需求

public class Test {
    public static void main(String[] args) {
        System.out.println("本次生成的号码为:");
        doubleColorBall();
    }
    //分析:随机生成1~33的数六次,放入一个名red的数组,除第一次不需要判断数字是否存在数组里面外,其他五个都要判断,
    // 所以用do——while循环,蓝球生成1~16之间的一个数即可
    public static void doubleColorBall(){
        //1、定义一个数组存放红球
        int [] red =new int [6];
        //2、定义一个变量存放蓝球
        int blue = 0;
        int k = 0;
        //循环生成1~33的数放进red数组里面
        do{
            int n = randomColorBall(33);
            if(existence(red,n)){
                continue;
            }else{
                red[k] = n;
                k++;
            }
            //动态数组的初始化是系统的给的默认值,int类型的数组默认值为0
            //当数组的最后一个变量的不为0了,就说明数组满了,应为生成的数
            // 字不会为0,所以可以这样判断数组是否满了
        }while(0==red[red.length-1]);
        //遍历red数组,并输出红球
        for (int i=0;i<red.length;i++){
            System.out.print(red[i]+"\t");
        }
        //随机生成蓝球号码并输出
        System.out.println("-\t"+randomColorBall(16));
    }
    //随机生成1到x的数(包括x)
    public static int randomColorBall(int x){
        Random r = new Random();
        return r.nextInt(x)+1;
    }
    //判断数字是否已经在数组中
    public static boolean existence(int[]arr,int x){
        boolean flag = false;
        //遍历完成后flag没有变成true,说明x不再数组arr中
        for(int i=0;i<arr.length;i++){
            if(x == arr[i]){
                flag = true;
                break;
            }
        }
        return flag;
    }
}

双色球很好理解的,1~33号红球选六个,注意这个选六个,既然是选的六个,那么肯定没有重复的,所以在编写程序时需要加入一个方法判断当前生成的这个数是否已经有了,这是一个值得注意的地方,1~16号蓝球选择一个,这个就不必多说了,直接随机1~16就行了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值