1

コードの実行中にこのエラーが発生しました2013-02-2310:52:54.063 Calculator [31319:11303] *キャッチされない例外'NSRangeException'、理由:'-[__ NSCFString characterAtIndex:]:範囲またはインデックスアウトのためにアプリを終了します境界の*まずスローコールスタック:(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の)私のアプリケーションは、通常、テキストボックスに入力した文字列を取り、 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

2番目のループは、最初の文字列から文字を引き出します。これはおそらくあなたが意図したものではありません。2番目の文字列の各文字を反復処理するため、2番目の文字列が最初の文字列よりも長い場合は常に、上記のコードでこのエラーが発生します。

行を変更してみてください

unichar chi = [first characterAtIndex:j];

unichar chi = [second characterAtIndex:j];

そして、この問題はなくなります。

于 2013-02-23T05:41:17.047 に答える