Java双色球程序

public static void main(String[] args) {
int a[]=new int [6];
int b=(int)(Math.random()*15+1);
abcd:
while(true)
{
for(int i=0;i<a.length;i++)
{
a[i]=(int)(Math.random()*35+1);
}
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-1;j++)
{
if(a[i]!=a[j]&&i!=j&&i<a.length)
{
break abcd;
}
}
}
}
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a.length-1-i;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

for(int i=0;i<a.length;i++)
{
System.out.println(a[i]);
}
System.out.println("蓝色球为"+b);
}
刚学数组。请前辈指点 我的代码 哪里错误了。谢谢 目标是35选6 不重复 15选1 最后 15选6的排序

我能理解你的思路,但做法有点小问题,这种做法就注定了不好判断是否重复,给你提供一种更好的思路

public static void main(String[] args) {
        int a[]=new int [6];
        int b=(int)(Math.random()*15+1);
// abcd:
// while(true){
// for(int i=0;i<a.length;i++){
//     a[i]=(int)(Math.random()*35+1);//这里不要直接把随机出来的数放进数组,没法判断
// }
// for(int i=0;i<a.length-1;i++){ //你是想在这里循环判断是否重复吧,思路是对的,
// //但过程太乱读不明白了,a.length为什么要-1
// for(int j=0;j<a.length-1;j++){
// System.out.println(i);
// System.out.println(j);
// if(a[i]!=a[j]&&i!=j&&i<a.length){
// //问题在这,第一次循环i=0,j=0,没有问题
// //第二次循环i还=0,j=1了,那i肯定是不等j,所以必然break,根本没法判断
// System.out.println("----" + j);
// break abcd;
// }
// }
// }
// }
//下面是我给你提供的方法
int[] balls = new int[35];//创建一个有35个长度的数组作为选球池
for(int i=0;i<balls.length;i++){
balls[i] = i + 1; //循环放入1至35
}
boolean[] used = new boolean[balls.length];//创建一个boolean数组,用于记录是否重复
//长度和球池等长
for(int i = 0;i<a.length;i++){//循环向a数组中放入元素
for(;;){
int index = (int)(Math.random()*35);//生成一个随机数,这里不再+1了,因为随机的是下标,+1会出现越界
if(used[index]==true){ //如果used中,index的位置为true,则表示已经被随机过了
continue;//如果已经被随机过,则重新循环生成随机数
}
a[i] = balls[index];//如果没有被随机过,则将index所对应位置的元素放入a数组中
used[index] = true;//同时将该index位置设置为true,表示已经被随机过了
break;//退出当前循环,继续下一次向a中添加元素
}
}


for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}

// for(int i=0;i<a.length;i++){
// System.out.println(a[i]);
// }//输出数组不需要这么麻烦
System.out.println(Arrays.toString(a));
System.out.println("蓝色球为"+b);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-21
代码如下:
import java.util.*;
//这是一个模拟双色球机选的程序
public class Start {
// 机选主函数
public static void main(String[] args) {
Start start = new Start();

for (int i = 0; i < 10; i++) {//机选十注
start.beginRed();
start.runBlue();
}

}
// 红球机选号码方法
public void beginRed(){
List<Integer> num = new ArrayList<Integer>();
int i = 0;
while(true){
i = (int)(Math.random()*33+1);//随机产生1~33的整数
if (!num.contains(i)) {//判断集合里是否包含元素i
num.add(i);//往集合添加元素
if (num.size()==6) {
break;//选够6个号码后跳出循环
}
}
}
System.out.print("您机选的号码是:"+num);//打印集合元素
}
//蓝球机选号码方法
public void runBlue(){
int b = 0 ;
b = (int)(Math.random()*16+1);//随机产生1~16的整数

System.out.println("--"+b);
}
}
第2个回答  2014-04-07
你的类名呢?
第3个回答  2014-04-07
学习学习 效率好像不高
第4个回答  2018-12-27
더오십시오.질박한위로가
相似回答