- 定义
- 常用方法
- 代码示例
- 双色球案例
- 双色彩票的玩法
- 分析
- 实现步骤
- 代码示例
arrary工具类:用来操作数组(比如排序和搜索)的各种方法
使用这个方法需要导入工具包:import java.util.Arrays;
- 二分查找:Arrays.binarySearch(int [] arrary, int value);
- 数组内容转换成字符串的形式输出:Arrays.toString(int [] arrary);
- 数组排序:Arrays.sort(int [] arrary)
- 复制指定的数组:
- Arrays.copyOf(int [] arrary, int length);根据长度复制数组
- System.arraycopy(Object src, int srcPos, Object dest, int destPos,int length);,参数信息为:原对象,原对象的起始位置;目标数组,目标数组的起始位置;复制长度
- 判断两个数组是否相等:Arrays.equals(int [] arrary_1, int arrary_2);
- 使用指定的元素填充数组:Arrays.fill(int[] arrary, int value);
- 数组的复制,效率由高到低的排序是:arraycopy——>copyOf——>for循环读取
package class_1006;
import java.util.Arrays;
public class class_arrary {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num = {11,22,33,44,55,66,77,88,99,101};
int index_t = Arrays.binarySearch(num, 99);//二分查找_可以找到
System.out.println("序列中的下标是:"+index_t);
int index_f = Arrays.binarySearch(num, 0);//二分查找_找不到
System.out.println("序列中的下标是:"+index_f);//返回值为-(low+1)
int [] data = {101,10,88,55,66,77,33,200,109};
System.out.println("data数组转换后:"+Arrays.toString(data));//数组内容转换成string,直接输出
String new_num = Arrays.toString(num);
System.out.println("num数组转换后:"+new_num);//赋值给变量之后再进行输出
Arrays.sort(data);//使用的是快速排序
System.out.println("num数组排序转换后:"+Arrays.toString(data));//排序后输出字符串
//按照长度复制指定的数组,如果设置的长度大于数组的长度,多出的给数组的默认值0
int[] new_data = Arrays.copyOf(data, 10);
System.out.println("data数组复制换后:"+Arrays.toString(new_data));
//使用此种方式,长度参数长度控制的是复制数组元素的个数;原数组的起始位置控制的是从哪里开始取值
//新数组的起始位置,控制的是从哪里开始写入
int[] new_data_1 = new int[data.length];//创建一个新的数组并定义长度
System.arraycopy(new_data, 2, new_data_1, 2,3);//复制指定的数组
System.out.println("data数组复制后:"+Arrays.toString(new_data_1));
boolean result = Arrays.equals(data, num);//判断两个数组是否相等
System.out.println("两个数组的比较结果是:"+result);
Arrays.fill(num, 1000);//使用指定元素填充数据填充后的元素
System.out.println("填充后的结果是:"+Arrays.toString(num));
}
}
//结果
序列中的下标是:8
序列中的下标是:-1
data数组转换后:[101, 10, 88, 55, 66, 77, 33, 200, 109]
num数组转换后:[11, 22, 33, 44, 55, 66, 77, 88, 99, 101]
num数组排序转换后:[10, 33, 55, 66, 77, 88, 101, 109, 200]
data数组复制换后:[10, 33, 55, 66, 77, 88, 101, 109, 200, 0]
data数组复制后:[0, 0, 55, 66, 77, 0, 0, 0, 0]
两个数组的比较结果是:false
填充后的结果是:[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000]
双色球案例
双色彩票的玩法
双色球投注区分为红球号码区和篮球号区,红球号码区为01-33,篮球号码区为01-16;双色球每期从33个红球中开出6个号码,从16个蓝球中来处1个号码作为中奖的好摸啊,双色球的玩法即使竞猜开奖号码的6个红球号和1个蓝球号,顺序不限
- 一等奖 6个红球和1个蓝球全部正确
- 二等奖 6个红球正确
- 三等奖 5个红球和1个蓝球正确
- 四等奖 5个红球正确或者4个红球和1个蓝球正确
- 五等奖 4个红球正确或者3个红球和1个蓝球正确
- 六等奖 1个红球1个蓝球、2个红球和1个蓝球、1个蓝球正确
- 如何产生蓝球和红球?——随机数生成
- 如何接收用户选号?
- 如何验证是否中奖?
- 公布本期中奖号码
-
整体实现思路
第一步:用户选择是机选还是首选;机选随机生产,首选用户自己输入
第二步:接收用户选号(6红1蓝)
第三步:系统生成号码(6红1蓝)
第四步:比较号码和用户号码,计算等值个数
第五步:验证是否中奖
第六步:系统号码排序
第七步:给出结果 -
随机取值不重复算法(系统和用户)
-
盘算是否中奖的逻辑
-
结果输出
package class_1006;
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class class_two_color {
public static void main(String[] args) {
// TODO Auto-generated method stub
//准备工作——定义相关的变量
int[] userRedBall = new int[6];//定义用户选择的红球号码
int userBlueBall = 0;//用户选择的蓝球号码,因为只有1个,给一个默认值0
int[] rebortRedBall = new int[6];//定义系统选择的红球号码
int rebortBlueBall = 0;//系统选择的蓝球号码
int redCount = 0; //用户选择正确的红球数
int blueCount = 0; //用户选择正确的红球数
//需要随机生成1-33之间不重复的6个数(算法)
//实现方式:随机数生成后,将随机数与数组中的最后一位换位置,下次随机的时候数组-1
int[] redBall = new int[33];//用于随机生成红球号码的数组
for(int i=0;iball[j+1]){
ball[j]=ball[j]+ball[j+1];
ball[j+1]=ball[j]-ball[j+1];
ball[j]=ball[j]-ball[j+1];
}
}
}
}
//在指定数列中随机生成多个不重复的红球
//ballCoubnt为1-33的数列;redBall为生成的6个数放置的数组
public static void computerSelect(int [] redBall,int[] userRedball){
Random r = new Random();
int index = -1;//下标因为要重复用,所以放在这里
for(int i =0;i<=userRedball.length-1;i++){
//随机生成几个数,长度减去几,保证选出的数值不重复
index = r.nextInt(redBall.length-i);//在1-33的序列中随机生成一个数的下标
//index下标为选出数值存储的那个数,放在序列的末尾
userRedball[i]=redBall[index];//将下标的数值放在新序列中
int temp = redBall[index];//中间变量,暂时放存储的数值,用于交换
//0的时候要和序列的最后一个数值交换,当i=1时,要和序列的最后一个数值进行交换
redBall[index]= redBall[redBall.length-1-i];
redBall[redBall.length-1-i]=temp;
}
}
}
//结果
双色球游戏开始,祝你好运!
请选择购买号码的方式(1:机选 2:手选):
1
抱歉,您没有中奖
本期中奖红球号码为:
[3, 10, 18, 21, 25, 32]
本期中奖蓝球号码为:11
您选择的红球号码为:
[3, 18, 23, 24, 26, 30]
本期中奖蓝球号码为:16



