连连看-二维数组实现简单的生成随机数,消除两个数相同

来源:互联网 发布:课堂直播软件 编辑:程序博客网 时间:2024/05/18 06:23
import java.util.Random;
import java.util.Scanner;
class Lianliankan 
{
public static void main(String[] args) 
{
//手动输入几乘几格式
Scanner sc=new Scanner(System.in);
int num1=sc.nextInt();

int num2=sc.nextInt();

                //创建一个二维数组

int[][] lian=new int[num1][num2];
//完成初始化的操作 - 一定要注意要成对出现
Random r=new Random();
int count=0;
int temp=0;// 变量的申明
int x=0; // 代表第一维
int y=0;//代表第二维
int x2=0;// 代表第一维
int y2=0;//代表第二维
while(count<lian.length*lian[0].length/2)
{
temp=r.nextInt(9)+1;
x=r.nextInt(lian.length);// 随机一个第一维的数据
y=r.nextInt(lian[0].length);//随机一个第二维的数据
x2=r.nextInt(lian.length);
y2=r.nextInt(lian[0].length);
                        /*
1. 首先判断随机出来的下标是否被赋值过,如果被赋值过则里面的值一定不是0
2. 如果没有被赋值过则直接将我们随机的temp的数据赋值进去
3. 如果被赋值过,则通过一个while循环再次随机一组下标出来,直到随机的下标没有被赋值过则结束循环
4. 将随机的temp数据赋值给新随机的下标
*/

if(lian[x][y]==0)
{
lian[x][y]=temp;
}else
{
while(lian[x][y]!=0)
{
x=r.nextInt(lian.length);
       y=r.nextInt(lian[0].length);
}
lian[x][y]=temp;
}


if(lian[x2][y2]==0)
{
lian[x2][y2]=temp;
}else
{
while(lian[x2][y2]!=0)
{
x2=r.nextInt(lian.length);
       y2=r.nextInt(lian[0].length);
}
lian[x2][y2]=temp;
}
count++;
}


for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
  {
System.out.print(lian[i][j]+" ");
    }
System.out.println();
}
System.out.println();
/*
//手动设置参数
int[][] lian={{1,1,2,2,3,3},{3,3,4,4,5,5},{5,5,6,6,7,7},{7,7,8,8,9,9},{7,7,8,8,9,9},{7,7,8,8,9,7}};
for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
  {
System.out.print(lian[i][j]+" ");
    }
System.out.println();
}
System.out.println();
Random r=new Random();
int time=100;
int x=-1;
int y=-1;
int z=-1;
for(int i=0;i<lian.length;i++)
{
x=-1;y=-1;z=-1;time=100;
for(int j=0;j<lian[i].length;j++)
{

while(time>0)
      {
        x=r.nextInt(lian[i].length);
        y=r.nextInt(lian[i].length);
        z=lian[x][y];
        lian[x][y]=lian[y][x];
        lian[y][x]=z;
        time--;
       }
}
}

for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
  {
System.out.print(lian[i][j]+" ");
    }
System.out.println();
}
System.out.println();
*/


int f=1;  //用来跳出循环
//消除
  for(int x1=0;x1<lian.length;x1++)
  {
  for(int y1=0;y1<lian[x1].length;y1++)
  {
  f=1;
   for(int i=0;i<lian.length;i++)
      {
       for(int j=0;j<lian[i].length;j++)
     {
if((x1!=i || y1!=j) && lian[x1][y1]==lian[i][j] &&lian[x1][y1]!=0 )
   {
lian[x1][y1]=0;
lian[i][j]=0;
f=0;
break;
}    
 }
  if(f==0)
 {
  break;
 }
  }
  }
   }
           

for(int i=0;i<lian.length;i++)
{
for(int j=0;j<lian[i].length;j++)
  {
System.out.print(lian[i][j]+" ");
    }
System.out.println();
}


}
}
原创粉丝点击