Java基础编程案例(专题二)

将来我们去做一些需求,都是一个一个方法来实现的,所以在这里我们采用方法来编写所有案例。

案例六: 抢红包

 

 备注:因为该题为java的基础练习,没有用到集合,使用集合的话会跟简单,之后会出,请见谅.

 分析:

1.首先,考虑方法是否需要接收数据处理?
    需要接收5个红包,至于是哪5个红包,可以有调用者传递;把5个红包的数值,用数组来存     储。
    所以,参数就是一个数组
    
2.接着,考虑方法是否需要有返回值?
    按照需求的效果,抢完红包就直接打印了,不需要返回值

3.最后,考虑方法内部的业务逻辑是怎么的?

        (1)首先,写一个循环,循环次数为数组的长度
        (2)每次循环,键盘录入,提示"用户录入任意键抽奖:"
        (3)随机从数组中产生一个索引,获取索引位置的元素,这个元素就表示抽的红包
            如果值不为0,则打印如:"恭喜您,您抽中了520元",把这个位置元素置为0
            如果值为0,则说明这个红包被抽过,重新循环到第2步,重新抽奖

代码:

package cn.itcast.practices;

import java.util.Random;
import java.util.Scanner;

public class Test7 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 45, 48, 78, 26};
        method(arr);
    }

    public static void method(int[] arr) {
        //创建对象
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        //1)首先,写一个循环,循环次数为数组的长度
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入任意内容抽奖");
            scanner.next();
            //一直抽,抽到后把该值改为0并退出循环
            while (true) {
                //3)随机从数组中产生一个索引,获取索引位置的元素,这个元素就表示抽的红包
                int index = random.nextInt(arr.length);
                //如果取出的元素不为0就输出打印,并且把当前值改为零
                // 如果为零就继续while循环直到不为零
                if (arr[index] != 0) {
                    System.out.println("恭喜你中:"+arr[index]);
                    arr[index] = 0;
                    break;
                }
            }
        }
    }
}

运行:

案例七: 找素数(质数)

 

 备注:这里我使用的是循环遍历的方法,简单容易理解

分析:

1.首先,考虑方法是否需要接收数据处理?
方法需要两个参数来接收范围的开始值start,和范围的结束值end
    
2.接着,考虑方法是否需要返回值?
返回值就是素数的个数

3.最后,考虑方法内部的业务逻辑
    思考:怎么判断一个数是素数呢?要仅仅抓住,素数的要求:“只能被1和本身整除的数是素数”。我们可以从反向思考,如果这个数只要能被除了1和本身以外的数整除,那么这个数就不是素数。

人话就是:  这个数与除1之外小于它的数取余不为0就是质数.

代码:

package cn.itcast.practices;

//求质数(循环遍历的方法)
public class Test8 {
    public static void main(String[] args) {
        primeNumber(101, 200);
    }

    public static void primeNumber(int start, int end) {
        //i表示当前数,j表示小于它的数
        for (int i = start; i < end; i++) { //101-200间的遍历
            int count = 0;
            for (int j = 2; j < i; j++) { //     3/2  4/2 4/3 5/2 5/3 5/4
                if (i % j == 0) {   //如果当前数与2到小于当前数的值进行取余 如果没有余数
                    count++;        //证明不是质数,则count++
                    break;
                }
            }
            if (count == 0) {       //判断如果count没有数,证明是质数
                System.out.println(i);
            }
        }
    }
}

运行:

案例八:  模拟双色球(强化案例)

1.首先,考虑方法是否需要接收数据处理?
        需要接受用户属于如的双色球号码

2.接着,考虑方法是否需要返回值?
      需要创建两个方法,一个方法用来系统生成一注双色球彩票的号码可以用一个数组来存
    所以,返回值是一个数组. 一个方法用来记录用户输入一注双色球彩票的号码,可以用一个数组来存所以,返回值是一个数组.

3.最后,考虑方法内部的业务逻辑怎么编写?
    1)首先需要准备2个int类型数组,长度为7; 用于存储系统和用户的投注号码
    2)用户: 循环遍历数组的前6个元素,采用键盘录入的方式,给前区6个红球赋值
       系统: 随机生成数组的前6个元素,给前区6个红球赋值
        要求录入的整数在1~33范围内,同时录入的整数在数组中不能已存在,否则重新录入
    3)最后再录入一个整数,给后区一个蓝球赋值
        要求整数必须在1~16范围内

代码:

package cn.itcast.practices;

import java.util.Random;
import java.util.Scanner;

public class Test9 {
    public static void main(String[] args) {
        int[] arrSys = systomBoll();   //数组:系统随机
        //printAll(arrSys);   //打印系统生成的数字,可以没有
        int[] arrUser = userBoll();    //数组:用户输入
        printAll(arrUser);
        //开奖
        kaiJiang(arrSys, arrUser);

    }
    //开奖方法,用户输入的球与随机生成的球对比
    public static void kaiJiang(int[] arrSys, int[] arrUser) {
        //定义变量记录红球中间个数和蓝球个数
        int radCount = 0;
        int blueCount = 0;
        //1.遍历用户的球
        for (int i = 0; i < arrUser.length - 1; i++) {
            //遍历系统所有的红球和用户的arrUser[i]去比较
            for (int j = 0; j < arrSys.length - 1; j++) {
                if (arrUser[i] == arrSys[j]) {
                    radCount++;
                }
            }
        }
        blueCount = arrUser[arrUser.length - 1] == arrSys[arrSys.length - 1] ? 1 : 0;
        if (radCount + blueCount == 7) {
            System.out.println("恭喜你中一等奖1000万");
        } else if (radCount == 6) {
            System.out.println("恭喜你中二等奖500万");
        } else if (radCount == 5 && blueCount == 1) {
            System.out.println("恭喜你中三等奖3000元");
        } else if (radCount + blueCount == 5) {
            System.out.println("恭喜你中四等奖200元");
        } else if (radCount + blueCount == 4) {
            System.out.println("恭喜你中五等奖10元");
        } else if (radCount + blueCount <= 3 && radCount + blueCount > 0) {
            System.out.println("恭喜你中六等奖5元");
        } else {
            System.out.println("没有中奖,感谢您的参与");
        }
    }

    //方法:用于让用户投注一组号码并返回(前6个是红球号码,最后1个是蓝球号码
    public static int[] userBoll() {
        //1.定义动态数组装这7个球
        int[] arr = new int[7];
        //2.键盘录入
        Scanner scanner = new Scanner(System.in);
        //循环六个红球
        for (int i = 0; i < arr.length - 1; i++) {
            System.out.println("请输入第" + (i + 1) + "个红球,红球不能重复。");
            int number = scanner.nextInt();
            int count = 0;
            for (int j = 0; j < i; j++) {
                if (arr[j] == number) {
                    count++;
                    break;
                }
            }
            if (count == 0) {
                arr[i] = number;
            } else {
                System.out.println("您输入的红球重复,请重新输入");
                i--;
            }
        }
        //蓝色球
        System.out.println("请输入第7个蓝球");
        arr[arr.length - 1] = scanner.nextInt();

        return arr;
    }

    //由系统随机产生一注双色球彩票开奖号码
    public static int[] systomBoll() {
        //1.创建动态数组来装球
        int[] arr = new int[7];
        Random random = new Random();
        //2.前六个红色球1-33,不能重复
        for (int i = 0; i < arr.length - 1; i++) {
            int number = random.nextInt(33) + 1;
            //检查number在arr中的前六个是否出现过
            int count = 0;
            for (int j = 0; j < 6; j++) {
                if (arr[j] == number) {
                    count++;
                    break;
                }
            }
            //判断统计的个数
            if (count == 0) {
                arr[i] = number;
            } else {
                //重复,再给一次机会
                i--;
            }
        }
        //随机一个蓝色球
        arr[arr.length - 1] = random.nextInt(16) + 1;

        return arr;
    }

    //遍历(方便遍历创建的方法)
    public static void printAll(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("]");
    }
}

 运行:

不足: 没有对数字的输入进行范围的条件判断

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
第1章 什么是Java程序设计语言 1 1.1 Java语言诞生背景 1 1.2 Java语言的特点 1 1.2.1 可移植性(universality) 1 1.2.2 安全性(security) 1 1.2.3 Java Virtual Machine(JVM) 2 1.2.4 面向对象的程序设计语言 2 1.2.5 线程(thread) 2 1.2.6 垃圾回收机制(garbage collection) 2 1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard Edition 1.5.0 3 1.3.2 安装开发文档及最终完成 5 1.3.3 Java开发工具 6 1.4 Java程序开发过程 7 1.5 运行第一个Java程序 7 1.6 巩固练习 8 第2章 理解对象与类 9 2.1 什么是对象 9 2.2 什么是类 9 2.3 HelloJava示例的分析 11 2.4 巩固练习 12 第3章 Java语言的基本语法 13 3.1 代码编写规则 13 3.2 注释 13 3.3 标识符 14 3.4 变量和常量 15 3.5 数据类型 16 3.5.1 基本数据类型 16 3.5.2 对象类型 21 3.6 类型转换 21 3.6.1 自动类型转换 22 3.6.2 强制类型转换 24 3.6.3 String型对象与基本数据类型间的运算 25 3.7 运算符 25 3.7.1 逻辑非(!) 26 3.7.2 位非运算符(~) 26 3.7.3 符号运算符(+、-) 27 3.7.4 增减运算符(++、--) 27 3.7.5 算术运算符(+、-、*、/) 29 3.7.6 位移(shift)运算符(、、) 29 3.7.7 关系运算符(、、=、=、==、!=) 31 3.7.8 快速逻辑与(&&)和快速逻辑或(||) 32 3.7.9 位运算符:位与(&)、位或(|)、位异或(^) 34 3.7.10 三目运算符(?:) 35 3.7.11 赋值运算符 36 3.7.12 对象运算符(instanceof) 37 3.8 巩固练习 37 第4章 程序流程控制语句 39 4.1 if语句 39 4.1.1 if语句格式1 39 4.1.2 if语句格式2 40 4.1.3 if语句格式3 41 4.2 switch语句 44 4.3 for语句 46 4.3.1 break语句 49 4.3.2 continue语句 49 4.3.3 多重for循环语句 50 4.3.4 多重for循环语句中的break与continue 52 4.4 while语句 55 4.5 do-while语句 57 4.6 巩固练习 57 第5章 类与对象 59 5.1 类的定义与对象的创建 59 5.2 引用赋值 61 5.3 成员方法 62 5.3.1 void返回类型 64 5.3.2 无参方法 65 5.3.3 多参方法 65 5.4 局部变量和成员变量 67 5.5 this引用 68 5.6 静态变量与静态方法 70 5.7 成员与静态方法的关系 71 5.8 包与导入 72 5.9 访问控制符 74 5.10 重载 77 5.11 构造函数 79 5.12 类的初始化 83 5.12.1 静态块 84 5.12.2 实例块 84 5.13 巩固练习 85 第6章 数组 86 6.1 基本数据类型数组 86 6.2 一维数组的初始化 88 6.3 对象数组 88 6.4 维数组 91 6.5 三维数组 95 6.6 巩固练习 97 第7章 对象与方法 99 7.1 对象的创建与销毁 99 7.2 值传递调用 102 7.3 引用传递调用 103 7.4 获取命令行参数 105 7.5 返回对象引用 106 7.6 返回新对象 107 7.7 自引用 108 7.8 递归调用 111 7.9 巩固练习 114 第8章 继承 117 8.1 继承的概念 117 8.2 子类对象的创建 118 8.3 this与super 119 8.4 继承中的访问控制符 123 8.5 覆盖 124 8.6 多态 126 8.7 引用的范围 127 8.8 引用变量的类型转换 128 8.9 Object类 129 8.10 “==”与equals() 130 8.11 Object型引用变量 132 8.12 类的层级图 134 8.13 巩固练习 135 第9章 抽象类与接口 136 9.1 抽象类 136 9.2 final关键字 138 9.3 接口 139 9.4 Cloneable 接口 143 9.5 Enumeration接口 144 9.6 巩固练习 145
Java源码资源介绍 在寻求Java编程学习材料或解决开发中的实际问题时,一份高质量的Java源码资源无疑是最为宝贵的。我所提供的Java源码资源,正是为了满足广大Java学习者、大学生、开发人员等群体的切实需求而精心整理的。 可用性亮点: 即插即用:每份源码都经过严格测试,确保在不同的开发环境中都能快速部署、立即运行,无需过多的配置和调试。 注释详尽:为了让学习者更好地理解代码逻辑和实现细节,源码中的关键部分都附有详尽的中文注释,降低学习门槛。 模块化设计:源码采用模块化的设计思想,结构清晰、易于扩展,方便用户根据自己的需求进行定制和修改。 适用场景: 学习与研究:对于大学生和初学者来说,这份源码资源是了解Java编程规范、学习Java高级特性的绝佳材料。通过阅读和运行源码,可以快速提升编程技能和实践能力。 项目实践:对于正在进行Java项目开发的人员来说,这份源码资源提供了丰富的实战案例和解决方案。无论是需要实现特定的功能还是解决复杂的性能问题,都能在这里找到灵感和帮助。 教学辅导:对于教师和教育机构来说,这份源码资源也是不可多得的教学辅助材料。它不仅可以用于课堂演示和实验指导,还可以作为学生的课后练习和扩展阅读材料。 总之,这份Java源码资源以其高度的可用性和广泛的适用性,成为了Java学习者和开发人员的必备宝藏。无论你是初学者还是资深开发者,都能在这里找到属于自己的价值和收获。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序一定有bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值