Objective c 输出中文字符而不是数字?目标C
它应该做什么:获取输入的字符串组中的所有数字,并在每次向NSMutableString数字追加新字符时打印出来。然后,如果当前字符不是一个数字,它会检查它的+或x,或*,-。如果它是其中之一,那么它会将其附加到一个数组中并打印出来 它在做什么:输出中文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
`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] 퀱퀲퀵퀶큸퀴퀵`
问题:我认为这与unicharchar 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:¤t 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:¤t 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);
}