1

运行代码时出现此错误 2013-02-23 10:52:54.063 Calculator[31319:11303] * 由于未捕获的异常 'NSRangeException' 导致应用程序终止,原因:'-[__NSCFString characterAtIndex:]: Range or index out of bounds' * First throw call stack: (0x1c90012 0x10cde7e 0x1c8fdeb 0x1c56c0d 0x2d4b 0x10e1705 0x18920 0x188b8 0xd9671 0xd9bcf 0xd8d38 0x4833f 0x48552 0x263aa 0x17cf8 0x1bebdf9 0x1bebad0 0x1c05bf5 0x1c05962 0x1c36bb6 0x1c35f44 0x1c35e1b 0x1bea7e3 0x1bea668 0x1565c 0x22c2 0x21f5 0x1) My application usually takes the string entered in the textbox and转换为 ascii 值,然后我为它编写了一个小算法。下面是我如何将字符串转换为 ascii 的一段代码

    for (int i=0; i<[first length]; i++) {

        unichar ch = [first characterAtIndex:i];
        firsttotal = firsttotal +ch;

    }
    for (int j=0; j<[second length]; j++) {

        unichar chi = [first characterAtIndex:j];
        secondtotal = secondtotal +chi;

    }
4

2 回答 2

1

除非我读错了你的代码,否则应该是这样的:

    for (int i=0; i<[first length]; i++) {
        unichar ch = [first characterAtIndex:i];
        firsttotal = firsttotal +ch;
    }
    for (int j=0; j<[second length]; j++) {
        unichar chi = [second characterAtIndex:j]; // <-- THIS LINE
        secondtotal = secondtotal +chi;
    }

您正在尝试从中获取first可能超出字符串末尾的字符。

于 2013-02-23T05:41:55.843 回答
0

您的第二个循环是从第一个字符串中提取字符。这可能不是您想要的。因为您对第二个字符串中的每个字符进行了迭代,所以只要第二个字符串比第一个字符串长,您就会在上面发布的代码中出现此错误。

换行试试

unichar chi = [first characterAtIndex:j];

unichar chi = [second characterAtIndex:j];

这个问题就会消失。

于 2013-02-23T05:41:17.047 回答