从输入到英语的整数

时间:2012-03-30 02:07:06

标签: objective-c xcode command-line

我要做的是让用户输入一个数字,然后程序以单词形式读回每个数字。例如:

Input: 517

Output: Five One Seven

这是一个简单的命令行工具,使用NSLogs和scanf来获取输入并提供输出,没有太高级。我有它的主旨,但它只适用于一位数字:

    #import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {

        int number;

        NSLog(@"Type your number.");
        scanf("%i", &number);


        if (number == 0) {
            NSLog(@"Zero");
        } else if (number == 1){
            NSLog(@"One");
        } else if (number == 2) {
            NSLog(@"Two");
        } else if (number == 3) {
            NSLog(@"Three"); 
        } else if (number == 4) {
            NSLog(@"Four");
        } else if (number == 5) {
            NSLog(@"Five");
        } else if (number == 6) {
            NSLog(@"Six");
        } else if (number == 7) {
            NSLog(@"Seven");
        } else  if (number == 8) {
            NSLog(@"Eight");
        } else if (number == 9) {
            NSLog(@"Nine");
        } 

    }
    return 0;
}

但是,我在使用更多数字时遇到问题。我正在考虑使用这样的东西来拆分它们:

            right_digit = number % 10;
        NSLog(@"%i", right_digit);
        number /= 10;

但这会向后输出。

有什么建议吗?

由于

3 个答案:

答案 0 :(得分:1)

使用递归

void printNumber(int a){
  if(a/10 > 0){
     printNumber(a/10);
  }

  int digit = a%10;
  switch(digit){
  {
    case 0:
       NSLog(@"Zero ");
       break;
    case 1:
       NSLog(@"One ");
       break;
    case 2:
       NSLog("Two ");
       break;
     ....
  }

}

答案 1 :(得分:0)

因此,您向后创建一个列表然后将其反转,并将该数字读给用户。

用户在性能方面不会有任何差异。

要使用数组执行此操作,您可以查看以下问题:

How can I reverse a NSArray in Objective-C?

答案 2 :(得分:0)

NSNumberFormatter有一个样式,可以帮助你处理它。

NSNumberFormatter *numberFormatter = [[NumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;