时间: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期间,第一次自己写一个小项目,不足之处非常多!