我需要知道如何以正确的顺序将整数拆分成数字,例如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;
}
答案 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:@", "]);