1

すべきこと: 入力された文字列グループのすべての数値を取得し、新しい文字が NSMutableString 数値に追加されるたびに出力します。次に、現在の文字が数値でない場合は、+ または x、または *、- であるかどうかを確認します。それらの1つである場合、それを配列に追加して出力します。

何をしているか: 中国語の出力

`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];、その部分なしでコードを実行すると、else if正しく動作します。ご覧のとおり、文字列の一部である文字数は予想された数ですが、問題は間違った言語にあるようです。

私のコード:

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;
}
4

2 に答える 2

1

charを に「変換」したことがわかりますNSStringcur印刷している文字列に追加してみませんか? だから変更:

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

に:

[number appendString:cur]
于 2012-05-03T04:31:17.680 に答える