栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java自学——arrary工具类和双色球案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java自学——arrary工具类和双色球案例

java自学——arrary工具类
  • 定义
  • 常用方法
  • 代码示例
  • 双色球案例
    • 双色彩票的玩法
    • 分析
    • 实现步骤
    • 代码示例

定义

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号