0

这是我在stackoverflow中的第一个问题!我试图在 xcode 中使用两个数组来反转字符串,我设置了界面,我得到了一个按钮、一个文本字段和一个标签。触摸按钮时,进入文本字段的任何内容都会反转!我得到了代码,在纸上对我来说似乎是正确的,问题是当我用例如“HELLO”测试应用程序时,myArray 的内容是“H E”,reverseArray 是“OL L”。如果有人反刍帮助我非常厌倦跟踪此代码,我将不胜感激:(((这是代码:

@interface ViewController ()
@end


@implementation ViewController
@synthesize textField,string1,string2,reverseArray,myArray;
@synthesize Label1;
- (IBAction)Reverse:(UIButton *)sender {
reverseArray=[[NSMutableArray alloc]init];
string1=[[NSString alloc]init];
string2=[[NSString alloc]init];
string1=textField.text;
myArray=[[NSMutableArray alloc]init];
    for (int i=0; i<=string1.length-1; i++) {
    [myArray insertObject:[[NSString alloc] initWithFormat:@"%c",[string1 characterAtIndex:i]] atIndex:i];

}
    for (int j=0; j<=myArray.count-1; j++) {
    [reverseArray insertObject:[myArray objectAtIndex:myArray.count-1] atIndex:j];
    [myArray removeLastObject];


}
NSLog(@"%@",myArray);
NSLog(@"%@",reverseArray);
4

1 回答 1

1

对于第二个循环,您使用 myArray.count 作为“for”循环的结束条件,但 myArray.count 每次循环迭代都会减少 1,因为每次迭代都会从 myArray 中删除最后一个对象。想一想:

First iteration:  j=0; myArray.count - 1 = 4
Second iteration: j=1; myArray.count - 1 = 3
Third iteration:  j=2; myArray.count - 1 = 2

它在第四次迭代时停止,因为 j=3 > myArray.count -1 = 1

在第二个循环中尝试这样的事情(注意:我现在不在 xCode 前面,所以下面的代码块中可能会有错误。请谨慎对待):

for( int j = string1.length -1; j >= 0; j-- ) {
    [reverseArray addObject:[myArray objectAtIndex:j]];
}
于 2012-09-08T20:51:41.790 回答