如何将整数拆分为组件数字

时间:2013-03-31 11:17:26

标签: objective-c split integer

我需要知道如何以正确的顺序将整数拆分成数字,例如1234显示为1 2 3 4.我希望它分割整数并将数字显示为单词,因此1234 = 1 2 3 4 =一二三四。这就是我到目前为止所拥有的。它会分割一个整数并将数字显示为单词,但它们的顺序相反。对不起,如果它有点乱。我也刚刚开始学习目标c所以我不知道数组和所有那些东西。

 int number, right_digit, counter;

    counter = 1;

    NSLog(@"Enter your number");

    while (counter != 0) {
    scanf("%i", &number);


    do {

  right_digit = number % 10;
  number /= 10;



    if (right_digit == 1)
        NSLog(@"one");

    else if (right_digit == 2)
        NSLog(@"two");

    else if (right_digit == 3)
        NSLog(@"three");

    else if (right_digit == 4)
        NSLog(@"four");

    else if (right_digit == 5)
        NSLog(@"five");

    else if (right_digit == 6)
        NSLog(@"six");

    else if (right_digit == 7)
        NSLog(@"seven");

    else if (right_digit == 8)
        NSLog(@"eight");

    else if (right_digit == 9)
        NSLog(@"nine");

    else if (right_digit == 0)
        NSLog(@"zero"); 

    }
    while (number != 0);

    }
}
return 0;
}

3 个答案:

答案 0 :(得分:4)

NSInteger num=1234;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    digits[digits.count]=@(digit);
}

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
         case 0: NSLog(@"Zero"); break;
         case 1: NSLog(@"One"); break;
         case 2: NSLog(@"Two"); break;
         case 3: NSLog(@"Three"); break;
         case 4: NSLog(@"Four"); break;
         case 5: NSLog(@"Five"); break;
         case 6: NSLog(@"Six"); break;
         case 7: NSLog(@"Seven"); break;
         case 8: NSLog(@"Eight"); break;
         case 9: NSLog(@"Nine"); break;
    }
}

答案 1 :(得分:3)

你做的基本上是正确的,除了你应该在翻阅原始数字时存储单词(或数字),然后在打印出来时“向后播放”。完成此操作的最简单方法是使用NSMutableArray:在查看数字时为其添加单词,然后以相反的顺序迭代数组以进行打印。

一个注意事项是关于你对switch的使用:如果你在所有情况下做同样的事情,并且只有你的数据不同,你应该使用数组或字典进行查找,就像这样:

NSString *digitWords[] = {@"zero", @"one", @"two", @"three", ...};

使用此阵列,您可以调用

NSLog("%@", digitWords[digit]);

并删除switch语句。

答案 2 :(得分:2)

刚刚修改了Anoop Vaidya回答确切答案

NSInteger num=1234567890;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    [digits addObject:[NSString stringWithFormat:@"%d",digit]];

}

NSMutableArray *show = [NSMutableArray new];

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
        case 0:[show addObject:@"Zero"];    break;
        case 1:[show addObject:@"One"];     break;
        case 2:[show addObject:@"Two"];     break;
        case 3:[show addObject:@"Three"];   break;
        case 4:[show addObject:@"Four"];    break;
        case 5:[show addObject:@"Five"];    break;
        case 6:[show addObject:@"Six"];     break;
        case 7:[show addObject:@"Seven"];   break;
        case 8:[show addObject:@"Eight"];   break;
        case 9:[show addObject:@"Nine"];    break;
    }
}
NSLog(@"%d=%@",num,[show componentsJoinedByString:@", "]);