2018.05 java学习小项目

时间:2018.05 大一下学期
地点:武汉-学校
项目类型:java小项目——购买彩票(luckDraw)
制作时间:两天

自定义类代码:
(luckDraw.Dao>SystemClass.java)

package luckDraw.Dao;

import luckDraw.function.Function;

//系统生成的数据类
public class SystemClass{
    public int[] systemNumber;
    ///构造方法
    public SystemClass() {}
    public SystemClass(int[] systemNumber){
        this.systemNumber = systemNumber;
    }

    /**
     * 对目标数组进行随机赋值并且保证无重复数字
     * @param array目标被随机赋值数组
     * @return 返回true则表示成功
     */
    public static boolean setNumberToArray(int[] array){

        //循环赋值数组
        for(int i = 0; i < array.length; i++) {
            array[i] = (int)(Math.random()*36);
        }
        //判断完成随机赋值后的数组是否还有重复,如果还有则重新随机赋值
        Function.changeSameNumber(array);
        return true;
        }
}

(luckDraw.Dao>UserClass.java)


package luckDraw.Dao;

import java.util.Scanner;

import luckDraw.function.Function;

//用户自定义的数据类
public class UserClass{
    public int[] userNumber = new int[6];
    ///构造方法
    public UserClass() {}
    public UserClass(int[] userNumber){
        this.userNumber = userNumber;
    }
    /**
    * 键盘输入的数值一一赋值给数组并保证无重复数字
    * @param array 被赋值数组
    */
    public static void setNumberToArray(int[] array){
        //循环赋值数组
        Scanner scan = new Scanner(System.in);
        for(int i = 0; i < array.length; i++) {
            array[i] = scan.nextInt();
        }
        //参数合法性判断:
        if(null == array || 0 == array.length){
            System.out.println("输入错误!");
            return;
        }
        //判断完成键入赋值后的数组是否还有重复,如果还有则需要用户重新赋值
        int temp = Function.findSameNumberInArray(array) + 1;
        while(Function.findSameNumberInArray(array) != -1)
        {
            System.out.println("第" + temp + "个数字出现重复!");
            System.out.println("请重新输入第" + temp + "个数字:");
            array[Function.findSameNumberInArray(array)] = scan.nextInt();  
        }
        return;
    }   
}

工具类代码:
(luckDraw.function)

package luckDraw.function;

public class Function {

    /**
     * 打印数组
     * @param array 目标数组
     */
    public static void printlnArray(int[] array){
        for(int i = 0; i < array.length; i++){
            System.out.print(array[i] + " ");
            if(i  == array.length - 1){
                System.out.println();
                break;
            }
        }
    }

    /**
     * 检测数组中的重复数字,并赋返回重复数字的下标
     * @param arr 目标待检测数组
     * @return 返回下标
     */
    public static int findSameNumberInArray(int[] arr){
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            for(int j = arr.length - 1; j > i ;){
                if(arr[i] == arr[j]){
                    index = i;//将重复数字赋值为0
                    break;
                }else {
                    j--;
                }
            }
        }
        return index;
    }

    /**
     * 将arr2数组的数据交给arr1
     * @param arr1 接受数据的数组
     * @param arr2 需要把数据交给另一个数组的数组
     */
    public static void arrayToArray(int[] arr1, int[] arr2){

        for(int i = 0; i <arr1.length; i++) {
            arr1[i] = arr2[i];
        }
    }
    /**
     * 将重复数字随机为别的数字并至不再重复为止
     * @param array 目标需要判断清除重复数字的数组
     * @return 返回true则表示成功
     */
    public static boolean changeSameNumber(int[] array){
        //循环判断数组中是否存在重复数字,如果存在则重新赋值随机数字
        while(findSameNumberInArray(array) != -1) { 
            array[findSameNumberInArray(array)] = (int)(Math.random()*36);  
        }

        return true;
    }

    /**
     * 对比用户与系统拥有的数组,对应获得奖励
     * @param userarray 用户拥有的数组
     * @param systemarray 系统拥有的数组
     * @return 返回为int的值则代表了相应奖励
     */
    public static int judgeLuck(int[] userarray, int[] systemarray){

        int temp = 0;

        for (int i = 0; i < systemarray.length - 1; i++) {
            for(int j = 0; j < systemarray.length - 1; j++){
                if(userarray[i] == systemarray[j]){ 
                    temp++; //将记录重复次数的下标标记
                }
            }   
        }
        return temp;
    }

    /**
     * 判断奖励大小
     * @param userarray 用户拥有的号码
     * @param systemarray 系统生成的号码
     */
    public static void judgeLuckPrint(int[] userarray, int[] systemarray){
        switch(judgeLuck(userarray,systemarray)){

        case 1:
            System.out.println("恭喜你获得了六等奖,奖励你一块钱!");
            break;
        case 2:
            System.out.println("恭喜你获得了五等奖,奖励你十块钱!");
            break;
        case 3:
            System.out.println("恭喜你获得了四等奖,奖励你一千元!");
        case 4:
            System.out.println("恭喜你获得了三等奖,奖励你十万元!");
            break;
        case 5: 
            System.out.println("恭喜你获得了二等奖,奖励你一百万!");
            break;
        case 6:
            System.out.println("天选之人!!!恭喜你喜得千万大奖!!!");
            break;
        default:
            System.out.println("很抱歉!你与奖励擦肩而过!");
        }
    }
}

界面代码:
(luckDraw.view)

package luckDraw.view;
import java.util.Scanner;
import luckDraw.Dao.SystemClass;
import luckDraw.Dao.UserClass;
import luckDraw.function.Function;

public class userView {
    public static void main(String[] args) {

        //view代码块
        //初始让用户选择随机号码或者自选号码
        System.out.println("欢迎购买双色球!您可以选择以下两种购买方案:");
        System.out.println("1.随机六个号码");
        System.out.println("2.自选六个号码");
        System.out.println("(规则:兑奖时凭你购买的号码与摇奖出的随机号码比对");
        System.out.println("按对应的号码数获取相应的奖励,不同顺序的相同号码也");
        System.out.println("行哦!)");
        System.out.println("请输入你的选择:");

        //获取用户选择
        Scanner scan = new Scanner(System.in);
        int choise = scan.nextInt();

        //设置一个获取用户号码的数组
        int[] userArray = new int[6];

        //判断用户选择
        switch(choise) {

        case 1:
            //选择1
            System.out.println("已经给你随机出了六个号码:");
            SystemClass userArray1 = new SystemClass();
            userArray1.systemNumber = new int[6];
            userArray1.setNumberToArray(userArray1.systemNumber);
            System.out.println("你的随机号码为:");
            Function.printlnArray(userArray1.systemNumber);
            Function.arrayToArray(userArray, userArray1.systemNumber);//将数据交给外部的变量
            break;

        case 2:
            //选择2
            UserClass userArray2 = new UserClass();
            userArray2.userNumber = new int[6];
            System.out.println("请输入你想选择的六个号码");
            System.out.println( "(要求:选择的号码应在0~36之间,且不能重复!)");
            userArray2.setNumberToArray(userArray2.userNumber);
            System.out.println("你的自选号码为:");
            Function.printlnArray(userArray2.userNumber);
            Function.arrayToArray(userArray, userArray2.userNumber);//将数据交给外部的变量
            break;

        default:
            System.out.println("没有购买的诚意!");
            System.out.println("不给你玩了!程序结束!");
            return;
        }

        //兑奖提示
        System.out.println("是否前去兑奖?");
        System.out.println("1.算了算了心脏不好不去了");
        System.out.println("2.好的,现在就去");
        System.out.println("请输入你的选择:");
        //获取用户选择
        int choise2 = scan.nextInt();
        scan.close();
        //进行判断,给出不同结果
        switch(choise2){

        case 1:
            System.out.println("鄙视!!你走吧!!");
            return;

        case 2:     
            //系统生成一组号码用于判断获奖情况
            SystemClass systemArray = new SystemClass();
            systemArray.systemNumber = new int[6];
            systemArray.setNumberToArray(systemArray.systemNumber);

            //公布系统生成的号码
            System.out.println("公布了摇出的号码是:");
            Function.printlnArray(systemArray.systemNumber);
            //进行获奖判断
            Function.judgeLuckPrint(userArray,systemArray.systemNumber);
            break;

        default:
            System.out.println("没有兑奖的诚意!");
            System.out.println("不给你玩了!程序结束!");
            return;
        }   
    }

}

总结:学习完java期间,第一次自己写一个小项目,不足之处非常多!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值