Java 数组练习


java 数组练习

一、题目:

将9份水果随机分配给9位同学
{“苹果”,“香蕉”,“木瓜”,“南瓜”,“凤梨”,“菠萝”,“橘子”,“草莓”,“哈密瓜”}


二、思路:

  • 首先,把数组分为两个半区,每次分别从两个半区里面随机抽取一个。
  • 然后利用随机数来判断是否交换两个半区的数值,保证两个半区的数值有足够的随机数。
  • 接下来将前半区的第一个值赋给之前抽取的值的位置
  • 将后半区的最后一个值赋给之前抽取的值的位置
  • 以此类推,最终只剩下最后的中间数,将其赋值给新数组最后一个位置

三、代码:

String[] names ={"苹果","香蕉","木瓜","南瓜","凤梨","菠萝","橘子","草莓","哈密瓜"};	
Random random = new Random();
String nameNew[]= new String[9];
int i =5,k=0,j=0,numberFinal ,numberFirst;
System.out.println("随机前数组:"+Arrays.toString(names));
while(i>1) {
//定义前半区下标
	numberFinal = random.nextInt(i)+4;
	//定义后半区下标
	numberFirst = random.nextInt(--i)+j;
	//保证足够的随机性,如果为真交换前后两个半区的数值
	if(random.nextBoolean()) {
		//将随机数值赋给新数组
		nameNew[k++]=  names[numberFinal];
		nameNew[k++]=  names[numberFirst];		
		}else {
			nameNew[k++]=  names[numberFirst];
			nameNew[k++]=  names[numberFinal];		
		}
			//将后半区的最后面一位替换掉随机数的位置
			names[numberFinal]=names[i+4];
			//将前半区的最前面一位替换掉随机数的位置
			names[numberFirst]=names[j++];
		}
nameNew[8]=names[4];//最中间数值->新的数组最后一位
System.out.println("随机后数组:"+Arrays.toString(nameNew));
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值