Objective c 输出中文字符而不是数字?目标C

Objective c 输出中文字符而不是数字?目标C,objective-c,Objective C,它应该做什么:获取输入的字符串组中的所有数字,并在每次向NSMutableString数字追加新字符时打印出来。然后,如果当前字符不是一个数字,它会检查它的+或x,或*,-。如果它是其中之一,那么它会将其附加到一个数组中并打印出来 它在做什么:输出中文 `Please enter math: 12+56x45 2012-05-02 23:52:06.538 CALC[1921:403] 퀱 2012-05-02 23:52:06.541 CALC[1921:403] 퀱퀲 2012-05-0

它应该做什么:获取输入的字符串组中的所有数字,并在每次向NSMutableString数字追加新字符时打印出来。然后,如果当前字符不是一个数字,它会检查它的+或x,或*,-。如果它是其中之一,那么它会将其附加到一个数组中并打印出来

它在做什么:输出中文

`Please enter math: 12+56x45
2012-05-02 23:52:06.538 CALC[1921:403] 퀱 
2012-05-02 23:52:06.541 CALC[1921:403] 퀱퀲 
2012-05-02 23:52:06.542 CALC[1921:403] running array (
"+"
)
2012-05-02 23:52:06.543 CALC[1921:403] 퀱퀲퀵  
2012-05-02 23:52:06.544 CALC[1921:403] 퀱퀲퀵퀶 
2012-05-02 23:52:06.544 CALC[1921:403] 퀱퀲퀵퀶큸 
2012-05-02 23:52:06.545 CALC[1921:403] 퀱퀲퀵퀶큸퀴 
2012-05-02 23:52:06.546 CALC[1921:403] 퀱퀲퀵퀶큸퀴퀵`
问题:我认为这与unichar
char current=[InputString characterAtIndex:I]有关但是,当我在没有
的情况下运行代码时,如果
部分正常工作。正如您所看到的,虽然字符串中的字符数是预期的数字,但问题似乎是它们使用了错误的语言

我的代码:

int main ()
{
    char userInput[99];
    NSMutableString *number = [NSMutableString string];
    int i;

    printf( "Please enter math: " );

    scanf( "%s", userInput );
    fpurge( stdin );
    NSString *InputString = [NSString stringWithUTF8String:userInput];
    NSMutableArray *broken = [NSMutableArray array];

    for (i=0; i < [InputString length]; i++) {
        char current = [InputString characterAtIndex:i];
        NSString *cur = [NSString stringWithFormat:@"%c" , current];
        if (isalnum(current)) {
            [number appendString:[NSString stringWithCharacters:&current length:1]];
            NSLog(@"%@", number);
        }
        else if (current == '+'|| current == 'x'||current == '*'||current == '-') { 
            [broken addObject:[NSString stringWithFormat:cur]];
            NSLog(@"running array %@", broken);
        }
    }
    return 0;
}
int main()
{
字符用户输入[99];
NSMutableString*编号=[NSMutableString];
int i;
printf(“请输入数学:”);
scanf(“%s”,用户输入);
fpurge(stdin);
NSString*InputString=[NSString stringWithUTF8String:userInput];
NSMutableArray*断开=[NSMutableArray];
对于(i=0;i<[InputString长度];i++){
字符当前=[InputString characterAtIndex:i];
NSString*cur=[NSString stringWithFormat:@“%c”,当前];
if(isalnum(当前)){
[number appendString:[NSString stringWithCharacters:&当前长度:1];
NSLog(@“%@”,编号);
}
如果(当前=='+'| |当前=='x'| |当前=='*'.'.|当前=='-'){
[断开的添加对象:[NSString stringWithFormat:cur]];
NSLog(@“正在运行的数组%@”,已断开);
}
}
返回0;
}
我看到您已将
char
转换为
NSString
。为什么不尝试将
cur
附加到正在打印的字符串中?因此,改变:

[number appendString:[NSString stringWithCharacters:&current length:1]]
致:


这里也许有一种更高级的方法可以将数字与运算符分开,这样您就可以更轻松地处理您想要执行的数学

NSString *equation = @"12+56x45";
NSCharacterSet *operatorCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"+-/x"];
NSCharacterSet *numberCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"1234567890"];

NSArray *numbersOnly = [equation componentsSeparatedByCharactersInSet: operatorCharacterSet];
NSArray *operatorsOnly = [equation componentsSeparatedByCharactersInSet: numberCharacterSet];

for (NSString *number in numbersOnly) {
    NSLog(@"%@", number);
}

for (NSString *operator in operatorsOnly) {
    NSLog(@"%@", operator);
}

结束位只记录数字和运算符,以显示它们现在如何划分为不同的数组。这会使你的任务变得简单一些,但如果你假设等式中的第一个数据是一个数字,你可以简单地串联遍历两个数组并进行计算。

实际上是韩语,而不是汉语。
NSString *equation = @"12+56x45";
NSCharacterSet *operatorCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"+-/x"];
NSCharacterSet *numberCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"1234567890"];

NSArray *numbersOnly = [equation componentsSeparatedByCharactersInSet: operatorCharacterSet];
NSArray *operatorsOnly = [equation componentsSeparatedByCharactersInSet: numberCharacterSet];

for (NSString *number in numbersOnly) {
    NSLog(@"%@", number);
}

for (NSString *operator in operatorsOnly) {
    NSLog(@"%@", operator);
}