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

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

案例六: 抢红包

Java基础编程案例(专题二)_第1张图片

 Java基础编程案例(专题二)_第2张图片

 备注:因为该题为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;
                }
            }
        }
    }
}

运行:

Java基础编程案例(专题二)_第3张图片

案例七: 找素数(质数)

 Java基础编程案例(专题二)_第4张图片

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

分析:

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);
            }
        }
    }
}

运行:

Java基础编程案例(专题二)_第5张图片

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

Java基础编程案例(专题二)_第6张图片

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("]");
    }
}

 运行:

Java基础编程案例(专题二)_第7张图片

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

你可能感兴趣的:(Java基础编程案例,java,开发语言,idea,学习)