重复数字数组

Repeating Number Array

我在创建一个程序时遇到问题,该程序在数组中接收数字并通过字符串 returns 接收它们。我的

中的以下代码

main.m 文件:

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NumberRepeater *repeater1 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @10]]];

        [repeater1 initWithNumbers:@[@[@1, @10]]];
        NSLog(@"%@", [repeater1 process]);

        NumberRepeater *repeater2 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @2], @[@2, @3]]];

        NSLog(@"%@", [repeater2 process]);

        NumberRepeater *repeater3 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];

        NSLog(@"%@", [repeater3 process]);
    }
    return 0;
}

我的 NumberRepeater.h 文件中的代码:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NumberRepeater : NSObject
- (instancetype)initWithNumbers:(NSArray *)numbers;

- (NSString *)process;


@end

NS_ASSUME_NONNULL_END

我的 NumberRepeater.m 文件中的代码:

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"
@implementation NumberRepeater

- (instancetype)initWithNumbers:(NSArray *)numbers {
    NumberRepeater *repeater1 = [[NumberRepeater alloc] 
initWithNumbers: @[@[@1, @10]]];
    [repeater1 initWithNumbers:@[@[@1, @10]]];
    NSLog(@"%@", repeater1);

    return 0;
}

- (NSString *)process {


    return 0;
}

@end

我的预期输出应该是:

1111111111
11, 222
10101010, 343434343434, 9292

这绝不是我需要解决的学校作业。我会喜欢一个解决方案,但是对此的指导会很棒。我觉得我几乎拥有它,因为我已经完成了与此类似的问题并且得到了我需要的输出但显然我错过了,我只是不知道是什么。我知道我的处理方法缺少代码,只是我不知道该放什么。任何帮助将不胜感激!

我没有正确理解你的问题,但我认为你想要一个函数,它接受一个数字数组和 return 一个由所有数字组合而成的字符串,如果这是你想要的,你可以创建一个函数像这样:-

-(NSString *)getStringFromArray:(NSArray <NSNumber *> *)array{
    NSString *numberString = @"";
    for (NSNumber *no in array) {
        numberString = [numberString stringByAppendingString:no.stringValue];
    }
    return numberString;
}

像这样调用 class 中的方法 :-

NSLog(@"Number String %@",[self getStringFromArray:@[@1,@2,@3,@4]]);

输出

Number String 1234

• 我需要根据你的问题为你讲解数组语法,

  1. 首先可以这样声明数组@[@1,@2,....]这个NSNumber的数组 object as Int Value ,因为数组只包含 id 对象所以我们不能直接使用 Int 但我们可以像那样使用 NSnumber @1

  2. array 中的对象可以是 Array its self 所以我们可以声明 array of array object 像这个例子 @[@[@10, @4], @[@3, @6], @[@2, @9]] 这个数组的数组 @[@[],@[],....etc]

• 根据你的问题我给你NSArray 两个项目 只需返回一个字符串,其中第一项重复(第二项)次

   Example :

        Input @[@1,@2]      repeat number#1  two times
        Output should be 11

        Input @[@1,@10]      repeat number#1  10 times
        Output should be 1111111111

       Input @[@[@1,@3],@[@3,@4]]      repeat number#1  3 times , number#3   4 time
        Output should be 111 3333

解决方案

NumberRepeater.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NumberRepeater : NSObject {
      NSArray * numbers; // private number array will be initialized during initialization of object
}
- (instancetype)initWithNumbers:(NSArray *)numbers;

- (NSString *)process;
@end

NS_ASSUME_NONNULL_END

NumberRepeater.m

#import "NumberRepeater.h"
#import <Foundation/Foundation.h>


// NumberRepeater Extention for set private numbers
@interface NumberRepeater ()
@property (nonatomic,retain) NSArray *numbers;
@end


@implementation NumberRepeater
@synthesize numbers;

- (instancetype)initWithNumbers:(NSArray *)numbers {

    self = [super init];
    if (self) {
        self.numbers = numbers;
    }
    return self;
}

- (NSString *)process {

// if numbers have No Data
   if (numbers.count == 0) { return  @"0"; }

    // Array of array  each array have two element first is number to repeat and second have number of repetation
    // Example @[@1, @2]   repeat number(1)   TWO times  so out put should be 11
 //   @[@[@1, @2], @[@2, @3]]

    NSMutableString * output = [NSMutableString new];

    for (NSArray*item in numbers) {

        // Array should be with this Format
          // Example @[@1, @2]   repeat number(1)   TWO times

              // assert item have tow items only  like that @[@1,@2]
           NSAssert(item.count == 2,@"Array Should have Two items only");

        NSNumber *numberToRepeat = item[0]; // repeat
        NSNumber *repetitionCount = item[1]; //repetition Count

        NSMutableString * repeatdString = [NSMutableString new];

        for (NSInteger i= 0; i < [repetitionCount integerValue] ; i++) {
            [repeatdString appendString:[numberToRepeat stringValue]];
        }

        [output appendString:repeatdString];
        [output appendFormat:@" "]; // space on join with muti array

    }


    return output;
}
@end

main.m

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NumberRepeater *repeater1 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @10]]];

        NSLog(@"%@", [repeater1 process]);

        NumberRepeater *repeater2 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @2], @[@2, @3]]];

        NSLog(@"%@", [repeater2 process]);

        NumberRepeater *repeater3 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];

        NSLog(@"%@", [repeater3 process]);
    }
    return 0;
}