本文目录一览:
- 1、JAVA抽奖问题
- 2、求一份抽奖游戏(Java写的代码)
- 3、Java代码实现抽奖:从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖
- 4、用java写一个抽奖程序
- 5、通过java 实现 模拟抽奖
- 6、JAVA抽奖的算法
JAVA抽奖问题
import java.util.Scanner;public class TextRandom {
public static Scanner input=new Scanner(System.in);
public static int count=0;//记录用户猜对的次数
public static int xitong =(int)Math.round(Math.random()*10);//系统产生的随机数0~10之间
public static int w[]=new int[3];//将系统随即产生的数字放在数组W中
public static int guess[]=new int [3];
public static void main(String[]args)
{
guess();
}
public static void guess()
{ //开始抽奖
for(int j=0;jw.length;j++){
System.out.println("开始抽奖,请用户输入0~10之间的数字,请输入第"+(j+1)+"个数字");
guess[j] =input.nextInt();
if(j2){
System.out.println("正在摇奖,需要中途放弃么 ?(y/n)");
String shuru =input.next();
if(shuru.equals('y')) break;
}
}
//系通开出的奖
System.out.println("系统产生三个数字是:");
for(int i=0;i3;i++)
{
System.out.print((int)Math.round(Math.random()*10));
w[i]=(int)Math.round(Math.random()*10);
}
//兑奖过程
for(int i=0;i3;i++)
{
if(guess[i]==w[i])
{
count++;//记录出用户抽中奖的次数
}
}
if(count==3)
{
System.out.println("恭喜你,你中奖了 ");
}
else
{
System.out.println("很遗憾,您没有中奖,欢迎下次再来!");
}
}
}
//我已尽力了
求一份抽奖游戏(Java写的代码)
import java.util.Scanner;
/**
*
*/
public class f {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
System.out.print("请输入抽奖号码上限:");
int max = scan.nextInt();
System.out.print("请输入抽奖次数:");
int n = scan.nextInt();
System.out.print("中奖号码依次为:");
for(int i=0;in;i++){
System.out.print((int)(Math.random()*max+1)+" ");
}
}
}
Java代码实现抽奖:从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖
抽取问题, 重点是 同一个学号不能重复被抽取.
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打乱顺序
System.out.println("乱序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
用java写一个抽奖程序
你是要JAVA可视化的 还是控制台的啊?
控制台的话 你可以用循环来取中奖号,将其存入list或set里(最好是set,因为set本来就不会重复)。如果用list存就另外写一个循环方法,来挨个判定该元素是不是已经在list中存在了,如果存在,就让选号的再加选一次,如果不重复,就放到list里去。。。。OK
通过java 实现 模拟抽奖
import java.util.Scanner;
public class Choujiang {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//定义Scanner类1234
System.out.println("请输入四位卡号:");//输入提示语
int cardNo = sc.nextInt();//接受输入数据
int gewei = cardNo%10;//分解个位
int shiwei = cardNo/10%10;//分解十位
int baiwei = cardNo/100%10;//分解百位
int qianwei = cardNo/1000;//分解千位
int sum = gewei+shiwei+baiwei+qianwei;
System.out.println("会员卡号四位之和是:"+sum);
if(sum20){//判断各位数和是否大于20
System.out.println("恭喜,你是幸运客户!");
}else{
System.out.println("谢谢惠顾!");
}
}
}
JAVA抽奖的算法
优先级规则使高等奖尽量在后期抽出
import java.util.LinkedList;
import java.util.List;
public class GetGift {
// 奖品仓库
private ListGift gifts = new LinkedListGift();
public GetGift() {
// 生成一堆奖品放进奖品仓库
// 一等奖一个优先级1,二等奖两个优先级2。。。20等奖20个优先级20
for (int i = 1; i = 20; i++) {
GiftType gt = new GiftType(i + "等奖", i, i);
for (int j = 1; j = i; j++) {
gifts.add(new Gift(i + "等奖——第" + j + "号", gt));
}
}
}
// 抽奖
public synchronized Gift getGift() {
int randomNumber = (int) (Math.random() * total());
int priority = 0;
for (Gift g : gifts) {
priority += g.getType().getPriority();
if (priority = randomNumber) {
// 从奖品库移出奖品
gifts.remove(g);
return g;
}
}
// 抽奖次数多于奖品时,没有奖品
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
GetGift gg = new GetGift();
// 一共生成210个奖品,抽210次,多抽显示null
for (int i = 0; i 210; i++) {
System.out.println(gg.getGift());
}
}
// 计算总优先级,内部使用
private int total() {
int result = 0;
for (Gift g : gifts) {
result += g.getType().getPriority();
}
return result;
}
}
// 记录奖品的信息
// 如1等奖共1个,优先级为1最难抽
class GiftType {
// 名字(如1等奖)
private String name;
// 这种奖品的数量,数量越大越容易抽到
private int quantity;
// 这种奖品的优先级,最小为1,数越大越容易抽到
private int priority;
public GiftType(String name, int quantity, int priority) {
this.name = name;
this.quantity = quantity;
this.priority = priority;
}
public int getPriority() {
return priority;
}
@Override
public String toString() {
return "GiftType [name=" + name + ", quantity=" + quantity + ", priority=" + priority + "]";
}
}
// 奖品
class Gift {
// 每个奖品有唯一id,抽奖不会重复,格式为"16等奖——第8号"
private String id;
// 这个奖品的类别
private GiftType type;
public Gift(String id, GiftType type) {
this.id = id;
this.type = type;
}
public GiftType getType() {
return type;
}
@Override
public String toString() {
return "Gift [id=" + id + ", type=" + type + "]";
}
}