-1

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
4

1 に答える 1

0

NSLog(@"配列の内容は%@",[式randEquation]);

コードに基づいて、このログが出力されるのは、 nilThe content of array is(null)であることを意味します。equation(効率的ではありませrandEquationんが) 問題ないように見えますが、問題はequation、ログ ステートメントを実行したときにインスタンスを作成していないことです。

于 2014-06-28T11:36:47.090 に答える