【发布时间】:2014-06-28 10:38:52
【问题描述】:
我正在生成一个随机方程,比如 2*3+4..... 并使用 DDMathparser 对其进行评估。这里我有一个类方法,它应该返回一个随机方程(存储在一个可变数组中),只有当它计算为一个整数时。 但是它一直返回 Null,我不知道为什么。请帮帮我!
#import "Equation.h"
#import "DDMathParser.h"
@implementation Equation
-(NSMutableArray*)randEquation{
NSMutableArray* usableEquation=[[NSMutableArray alloc]init];
while(1){
NSArray *nums = @[@"1", @"2", @"3", @"4", @"5",@"6",@"7",@"8",@"9"];
unsigned index1=arc4random()%9;
NSString* num = [NSString stringWithFormat:@"%@", [nums objectAtIndex:index1]];
NSArray *symbols = @[@"+", @"-", @"*", @"/"];
unsigned index=arc4random()%4;
NSString* symb = [NSString stringWithFormat:@"%@", [symbols objectAtIndex:index]];
NSMutableArray *arrayOfSymbolsAndNumbers = [[NSMutableArray alloc] init];
for( int i=0;i<=10;i++){
if (i%2==0) {
[arrayOfSymbolsAndNumbers addObject:num];
}
else{
[arrayOfSymbolsAndNumbers addObject:symb];
}
}
NSMutableString *stringOfSymbolsAndNumbers=[[NSMutableString alloc]init];
for (NSObject * obj in arrayOfSymbolsAndNumbers)
{
[stringOfSymbolsAndNumbers appendString:[obj description]];
}
usableEquation=arrayOfSymbolsAndNumbers;
NSNumber *result=[stringOfSymbolsAndNumbers numberByEvaluatingString];
float resultFloat = [result floatValue];
float checker=resultFloat;
if (floor(checker)==checker) {
break;
}
else{
continue;
}
}
return usableEquation;
}
@end
【问题讨论】:
-
您如何检查
nil回报?你做了什么调试? -
在故事板中,我使用 NSLog(@"The content of array is%@",[equation randEquation]);我的控制台上的输出是:数组的内容是(空)。此外,我将一些按钮的标题设置为该数组的内容,并且没有设置标题。
-
在之前的评论中:NSLog(@"数组的内容是%@",[equation randEquation]); “方程只是我的类“方程”的一个实例。
-
了解如何调试。从异常点开始,找出哪个值为 nil,然后返回到生成该值的位置。
标签: objective-c methods nsmutablearray ddmathparser