有2数组
neWRadmonArray = [[NSMutableArray alloc] init]; RadmonArray = [[NSMutableArray alloc] init];
[RadmonArray addObject:@"A"];
[RadmonArray addObject:@"B"];
[RadmonArray addObject:@"C"];
[RadmonArray addObject:@"D"];
[RadmonArray addObject:@"E"];
我现在随即从RadmonArray取出一条
-(NSString *) GenerateRandom{ int randomValue = arc4random()%5;//Generate 0 - 4
NSString *returnRandom = [RadmonArray objectAtIndex:randomValue];
int i;
int total;
bool existFlag=false; if(returnRandom==@"A" && hasGenerateBlue==true){
[self GenerateRandom];
}
for(i=0,total=[neWRadmonArray count];i<total;i++)
{
if (returnRandom == [neWRadmonArray objectAtIndex:i]){
existFlag = true;
break;
}
}
if(existFlag)//check if has generated.
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;
}
但是还是出重复的帮忙看看,,,
neWRadmonArray = [[NSMutableArray alloc] init]; RadmonArray = [[NSMutableArray alloc] init];
[RadmonArray addObject:@"A"];
[RadmonArray addObject:@"B"];
[RadmonArray addObject:@"C"];
[RadmonArray addObject:@"D"];
[RadmonArray addObject:@"E"];
我现在随即从RadmonArray取出一条
-(NSString *) GenerateRandom{ int randomValue = arc4random()%5;//Generate 0 - 4
NSString *returnRandom = [RadmonArray objectAtIndex:randomValue];
int i;
int total;
bool existFlag=false; if(returnRandom==@"A" && hasGenerateBlue==true){
[self GenerateRandom];
}
for(i=0,total=[neWRadmonArray count];i<total;i++)
{
if (returnRandom == [neWRadmonArray objectAtIndex:i]){
existFlag = true;
break;
}
}
if(existFlag)//check if has generated.
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;
}
但是还是出重复的帮忙看看,,,
解决方案 »
- 如何按照特殊的格式截取NSString中的内容
- 新人求组ios是如何引用控件对象
- 异常信息,请大家分析下,主要是什么原因,谢谢.(有时候会挂机)
- 求查看联系人、查看资源的方法。
- 当前ios7.0有没有可能存在不越狱无证书真机调试的可能性?
- 一个平台上运行,另一个平台上显示操作运行界面,如何做到的?
- XCode6中prefix.pch问题
- UILocalNotification 失效
- Xcode升级到7后 ,模拟器上运行没错真机报错 could not build module ‘*’
- iOS开发 问题
- Iphone 条形码扫描实例
- 献给Mac/iPhone开发初学者——Objective-C与objective-C++的混用
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;感觉就像这里的原因,如果存在了,它会调用自身函数,是不是当执行完[self GenerateRandom];之后它还会继续执行后面,后面的return returnRandom,返回的并不是你调用的[self Gen...dom]中return的东西,而是返回的你在当前这次调用函数最初赋予的,所以应该返回不出你想要的其实是递归调用的[self GeneratRandom]方法中返回的值
NSString *returnRandom = [RadmonArray objectAtIndex:randomValue];
int i;
int total;
bool existFlag=false; if(returnRandom==@"A" && hasGenerateBlue==true){
[self GenerateRandom];
}
for(i=0,total=[neWRadmonArray count];i<total;i++)
{
if (returnRandom == [neWRadmonArray objectAtIndex:i]){
existFlag = true;
break;
}
}
if(existFlag)//check if has generated.
{ //这里就是你调用自身,相当于把函数内容又过一次,
int randomValue = arc4random()%5;//Generate 0 - 4
NSString *returnRandom2222 = [RadmonArray objectAtIndex:randomValue];
int i;
int total;
bool existFlag=false; if(returnRandom==@"A" && hasGenerateBlue==true){
[self GenerateRandom];
}
for(i=0,total=[neWRadmonArray count];i<total;i++)
{
if (returnRandom == [neWRadmonArray objectAtIndex:i]){
existFlag = true;
break;
}
}
if(existFlag)//check if has generated.
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom; //这里是你想要的,它是这个if语句中再次调用自身方法,得到的是returnRandom2
}
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;//但这里才是你在其他调用此方法的方法中真正返回的。还是最初没有让exitsFlag为假的那个已经在newArray里的值
}
{
[self GenerateRandom];
}
else
{
[neWRadmonArray addObject:returnRandom];//put generated shape into array
}
return returnRandom;
}
而且你这段代码估计就有问题,generateRandom是有返回值的,怎么前面都没有赋值对象????
改成if(existFlag)//check if has generated.
{
returnRandom=[self GenerateRandom];
}
然后尝试下